使用PHP

时间:2017-02-08 01:22:30

标签: javascript php wordpress

问题

如何将®符号替换为<sup>&reg;</sup>。更具体地说,在WordPress项目中最干净的方法是什么?

背景

我有一个在CodePen中有效的Javascript解决方案。

但我希望这发生在服务器上,而不是客户端。将其置于WP项目中的最佳标准位置在哪里?我只负责维护一个主题,所以把它放在那里,但到底在哪里?

此外,代码只替换了第一个®。所以我需要循环它。

<小时/>

代码

的Javascript

function regReplace() {
    var regStr = document.getElementById("target-div").innerHTML; 
    var resSup = regStr.replace("®", "<sup>&reg;</sup>");
    document.getElementById("target-div").innerHTML = resSup;
}
regReplace();

1 个答案:

答案 0 :(得分:0)

最简单的方法是use a filterhook into the_content。它所需要的只是一个过滤函数,它将你的子字符串替换为另一个子字符串。

全站点替换

这将在所有用户生成的内容中用所需的HTML替换所有出现的®。

add_filter('the_content', 'replace_stuff');

function replace_stuff($content) {
    return str_replace("®", "<sup>&rep;</sup>", $content);
}

仅在特定页面上替换

这将仅替换此处指定为'your-slug'的slug匹配的页面上的所有匹配项。

add_filter('the_content', 'maybe_replace_stuff');

function maybe_replace_stuff($content) {

    $post = get_post();
    $slug = $post->post_name;

    if ($slug === 'your-slug') {
        $content = str_replace("®", "<sup>&rep;</sup>", $content);
    }

    return $content;
}

仅替换一组特定页面

与上面几乎相同,除了要检查多个页面slu。之外。

add_filter('the_content', 'maybe_replace_stuff');

function maybe_replace_stuff($content) {

    $acceptedSlugs = array('foo', 'bar');

    $post = get_post();
    $slug = $post->post_name;

    if (in_array($slug, $acceptedSlugs)) {
        $content = str_replace("®", "<sup>&rep;</sup>", $content);
    }

    return $content;
}

仅在特定模板用于帖子

时替换
add_filter('the_content', 'maybe_replace_stuff');

function maybe_replace_stuff($content) {

    $post = get_post();
    $template = get_post_meta($post->ID, '_wp_page_template', true);

    if ($template === 'your-template.php') {
        $content = str_replace("®", "<sup>&rep;</sup>", $content);
    }

    return $content;
}