禁止 WordPress 网站title中的 “-” 显示”—” 被转义成 & #8211; WordPress 第1张

WordPress有些自动功能,出于安全的考虑或者外国人的习惯问题,经常有点有点水土不服的意味。当然WordPress也是过于好心了,毕竟全世界这么多的站点都是运行着WordPress,只能照顾到大部分的需求,而不能精准解决部分人的要求了。否则也不会有数以万计的插件、主题了。毕竟,有了这个平台,怎么搭建出符合自己要求的网站,就是各有各的想法和实现的过程了。

而WordPress的自动转义,是使用了wptexturize()函数将纯文本字符转换成格式化的 HTML 实体,即形如–会转换成–这样的文本,显示的时候是没有问题,但是查看源代码是可以看到的。另外某些搜索引擎是没有差异化的对待转义后的实体,直接收录。

浏览器标题中显示:利熙博客 – 又一个WordPress站点(分隔符-转义后–)

这时候也不是那么好看了,特别是某些时候还会变的比较凌乱。因此需要从侧面来解决这个问题,使之不那么“自动化智能化”。关于wptexturize()函数的介绍在WordPress的官网上有https://developer.wordpress.org/reference/functions/wptexturize/,Replaces common plain text characters into formatted entities ,大致的意思是将普通纯文本字符替换为格式化实体。函数是在wp-includes/formatting.php 这个文件中的,51行开始,一直到315行的样子,简单摘录下:

function wptexturize( $text, $reset = false ) {<br>  global $wp_cockneyreplace, $shortcode_tags;<br>  static $static_characters = null,<br>    $static_replacements = null,<br>    $dynamic_characters = null,<br>    $dynamic_replacements = null,<br>    $default_no_texturize_tags = null,<br>    $default_no_texturize_shortcodes = null,<br>    $run_texturize = true,<br>    $apos = null,<br>    $prime = null,<br>    $double_prime = null,<br>    $opening_quote = null,<br>    $closing_quote = null,<br>    $opening_single_quote = null,<br>    $closing_single_quote = null,

既然知道代码函数了,那么要解决也比较有针对性了,根据网上其他人的指引,大概有三个方法:

方法①,使用插件

Quotmarks Replacer 插件可以通过禁用 wptexturize 函数,解决 WordPress 自动将半形的单引号、双引号和省略号转换为全形标点的问题。使后台输入的标点格式与前台读者浏览的标点格式保持一致。并且对 multisite 多站点(WordPress Mu)有良好的支持。插件可以在WordPress官网下载

方法② 禁用所有该函数

通过把该代码加到主题的functions.php函数中,即可实现相应的结果。

add_filter( 'run_wptexturize', '__return_false' );

方法③ 禁止函数对标题的转义

通过如下的代码来完成:

remove_filter('the_title', 'wptexturize');
remove_filter('wp_title', 'wptexturize');
remove_filter('single_post_title', 'wptexturize');

这样的话就不会出现在站点标题、页面的标题中出现的&#8211字符。

如上三种方法在网上都有相应的介绍,但测试了二、三方法,二可以达到效果,三却不行。不知道是否WordPress升级后的原因引起。

禁止后的效果:

禁止 WordPress 网站title中的 “-” 显示”—” 被转义成 & #8211; WordPress 第3张

发表评论

后才能评论