解决WordPress(WP)文章发布或者编辑中半角字符自动转全角字符的方法

我们在使用 WordPress 发布或者编辑文章时,其会自动转义一些字符,比如将‘–’转义为‘-’破折号等等,我们也称“全半角标点符号转换”或者“代码转义”。因为 WordPress 的安全措施会智能的将源代码中的所有半角符号自动修正为全角符号,可能目的是以防止外部源代码在网页上执行。

这个功能所带来的小麻烦就是在文章编辑中输入代码后,前台网页上显示的不是原始代码而会被自动转义,然后再被人使用复制粘贴后就会有问题(代码失去作用变成乱码)。如果你的 WordPress 网站经常要分享一些代码的话,就需要解决 WordPress 中半角全角字符转义的问题。那我们就来说说如何解决这件事情呢?其实这样的问题主要是WordPress 模式使用了 wptexturize函数将纯文本字符转换成格式化的 HTML 实体而已;

第一种解决方法:移除 wptexturize( ) 函数

在 WordPress 中“作怪”的函数就是 wptexturize( ) ,(本文最后附此函数简单说明)。那么就移除它,将下面的代码加入当前主题的 funtions.php 文件中:

//取消内容转义
remove_filter('the_content', 'wptexturize');
//取消摘要转义
remove_filter('the_excerpt', 'wptexturize');
//取消评论转义
remove_filter('comment_text', 'wptexturize');

一般我们只需要添加第一种代码(取消内容转义)取消文章内容转义就够了,很少有人去复制摘要和评论这些乱七八糟的玩意儿;

第二种方式依然是取消,我们还是需要添加到主题的 functions.php 文件:

//全角转半角,取消转义 
$qmr_work_tags = array(
'the_title', // 标题
'the_content', // 内容 *
'the_excerpt', // 摘要 *
'single_post_title', // 单篇文章标题
'comment_author', // 评论作者
'comment_text', // 评论内容 *
'link_description', // 友链描述(已弃用,但还很常用)
'bloginfo', // 博客信息
'wp_title', // 网站标题
'term_description', // 项目描述
'category_description', // 分类描述
'widget_title', // 小工具标题
'widget_text' // 小工具文本
);
foreach ( $qmr_work_tags as $qmr_work_tag ) {
remove_filter ($qmr_work_tag, 'wptexturize');
}

第三种方式:或者修改 WordPress 程序源代码(wordpress 早期版本源代码-不推荐)

修改 wordpress 程序根目录下 wp-includes/formatting.php 文件,把实现自动替换的相关语句注释掉。找到:

// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

将 $curl 开头的两句代码也用 // 注释掉就好;不推荐这种方法的原因是每次升级 WordPress 程序后,都需手动修改一下源文件。

第四种方法,依然是添加代码

只需要进入wordpress管理后台,主题文件夹编辑窗口下,找到function.php,然后在文件末尾添加这么一行:

?php remove_filter('the_content', 'wptexturize'); ?>

在其他地方也会用到此函数,因此需要更新上面的代码:

?php
/*
Plugin Name: 解决半角变全角
Author URI: https://www.laoliang.net/
*/
$qmr_work_tags = array(
'bloginfo',
'comment_author',
'comment_text',
'list_cats',
'link_name',
'link_description',
'link_notes',
'single_post_title',
'term_name',
'term_description',
'the_title',
'the_content',
'the_excerpt',
'wp_title',
'widget_title'
);

foreach ( $qmr_work_tags as $qmr_work_tag ) {
remove_filter ($qmr_work_tag, 'wptexturize');
}

?>

PS:以上几种办法,综上所述中,其实就第一种即可,要么就使用第二种,第三种也可以勉强使用,不太推荐第四种,其实第四种跟第三种是一样的,只不过升级的时候不会出现其他问题,仅此而已,以上代码仅供参考,各位看官有疑问请联系博主交流,感觉好,就打赏支持博主吧,教程到此结束;

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

更多请关注:老梁`s Blog

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。 您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
Laoliang.Net资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
老梁`s Blog(老梁博客) » 解决WordPress(WP)文章发布或者编辑中半角字符自动转全角字符的方法

发表评论

本站承接,网站推广(SEM,SEO),软件的安装的安装与调试,服务器的推荐以及配置,APP的开发与维护,网络或者web维护;财务软件,客户管理系统,人力资源,超市POS,医药管理,服务器安全,ecshop,金蝶,用友,管家婆;

立即查看 了解详情