我们在WordPress后台编辑器里编辑文章时,经常会碰到一些特殊的英文符号(半角)被强制转换成了中文编码的全角符号了(如:单引号、双引号、连字符等)。我们在后台的可视化状态浏览是正常的,但是我们到前台网页去浏览时就变样儿了。
这个问题会给我们造成很大的困扰,特别是文章中存在代码时,这个问题会让人非常恼火;一方面这会使代码看起来不美观,另一方面还可能误导浏览者,同时修改起来也非常麻烦。这一切都是WordPress太过“智能”惹的祸,默认情况下,它会调用函数wptexturize来执行这个转换。
解决这个问题的方法有两种:
一、直接修改函数wptexturize
打开wp-includes目录里面的formatting.php文件,定位到以下这几行代码:
$curl = str_replace($static_characters, $static_replacements, $curl); // regular expressions $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
将这两行语句都注释掉,如下:
// $curl = str_replace($static_characters, $static_replacements, $curl); // regular expressions // $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
二、调用remove_filter函数来移除WordPress对wptexturize的调用
这是最简单的方法,在主题目录下的functions.php文件中添加如下代码即可。
<?php remove_filter('the_title', 'wptexturize'); remove_filter('the_excerpt', 'wptexturize'); remove_filter('the_content', 'wptexturize'); ?>
当然,原则上不要去修改WordPress本身的文件,因为这会比较麻烦,同时每次更新版本的时候都要去修改代码,实在是不可取。因此,建议使用第二种方法。