WordPress下特殊英文字符变成中文字符的解决办法

我们在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本身的文件,因为这会比较麻烦,同时每次更新版本的时候都要去修改代码,实在是不可取。因此,建议使用第二种方法。

发表评论

邮箱地址不会被公开。 必填项已用*标注