如何将®符号替换为<sup>®</sup>
。更具体地说,在WordPress项目中最干净的方法是什么?
我有一个在CodePen中有效的Javascript解决方案。
但我希望这发生在服务器上,而不是客户端。将其置于WP项目中的最佳标准位置在哪里?我只负责维护一个主题,所以把它放在那里,但到底在哪里?
此外,代码只替换了第一个®。所以我需要循环它。
<小时/>
function regReplace() {
var regStr = document.getElementById("target-div").innerHTML;
var resSup = regStr.replace("®", "<sup>®</sup>");
document.getElementById("target-div").innerHTML = resSup;
}
regReplace();
答案 0 :(得分:0)
最简单的方法是use a filter到hook 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;
}