我们发现 WordPress 页面标题对 SEO 不太友好,使用“-”来使用分隔符是最好的方式。当然也有很多文章描述了网页标题中标题分隔符的使用,但是如果标题中有横杠“-”,查看页面源码的时候会发现横杠会被转义作为一个实体:-,虽然首页标签显示中的标题没问题,但是标题中出现了这个奇怪的字符串。那么如何修复 WordPress 标题中转义的破折号“-”?
找到模板文件 header.php,它位于“/wp-content/themes/template of your choice/”下。可以看到title标签中有一段php代码输出标题。有一个方法wp_title(“|”),用来输出标题的前半部分,”|” 是分隔符,所以我改了“|” 到“-”,刷新了首页,很开心,页面标题“|” 都是用“-”代替的,但是看源码的时候,很遗憾,“-”已经被–代替了,虽然网页标签中的标题显示正常,但是标题出现了,感觉很不爽.
既然我们选择了使用单杠“-”作为站点标题分隔符,我正在考虑开始修改代码以解决转义单杠“-”的问题。
方法一
WordPress 自带了一个特殊的钩子 wptexturize,在很多地方都有用到。查看 WordPress 的 wp-includes/formatting.php 了解详细信息。我们可以使用以下代码对此进行转义:
str_replace(“-“, “-“, get_the_title())
方法二
我们查看了 wp_title 方法,发现内部代码已经替换了这个符号。为什么要更换?暂时我也想不通。我只能从外围开始。我直接调用wp_title(“”),也就是不用分隔符号,在后面加上“-”,最终输出就变成了这样。
echo trim(wp_title(”, false, ‘right’));
回声’-‘;
博客信息(“名称”);
方法三
要解决本文标题所描述的问题,您可以简单地禁用 wptexturize 转义标题(推荐):
/**
* WordPress 标题中的破折号“-”转义为“-”
*/
remove_filter(‘the_title’, ‘wptexturize’);
remove_filter(‘wp_title’, ‘wptexturize’);
remove_filter(‘single_post_title’, ‘wptexturize’);
方法四
将以下代码复制到函数文档中:
函数 html_entity_decode_title($title)
{
$title = str_replace(“-“, “-“, $title);
$title = html_entity_decode($title);
返回$标题;
}
add_filter(‘the_title’, ‘html_entity_decode_title’);
add_filter(‘wp_title’, ‘html_entity_decode_title’);