解决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:以上几种办法,综上所述中,其实就第一种即可,要么就使用第二种,第三种也可以勉强使用,不太推荐第四种,其实第四种跟第三种是一样的,只不过升级的时候不会出现其他问题,仅此而已,以上代码仅供参考,各位看官有疑问请联系博主交流,感觉好,就打赏支持博主吧,教程到此结束;
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!
这些方法你现在有尝试过吗?好像失效了
@grey: 不存在失效,我自己的站就是这么解决的,我站几乎没有ctrl+C+V 都是自己测试或者自己心得,你可以看下自己的系统环境~~