WordPress 文章中英文数字间自动添加空格 代码

2018-01-2821:34:12 18 1,777
摘要

今天分享给大家的这个“WordPress 文章中英文数字间自动添加空格”代码,明月感觉是目前网上分享的最简单、最稳定方法了,至少明月已经使用了近半个月了,非常的稳定,效果也很不错。唯一的遗憾就是不能自动批量的修正早期文章,这个应该是美中不足吧!

今天明月分享个 WordPress 文章中英文数字间自动添加空格的代码,这个代码是明月在【泪雪博客】看到的,当时就用上了,没有想到效果竟然出奇的好。至于这个代码有什么用?其实就是对技术类博客来说在 SEO 方面会有好处,因为技术类博客文章经常性的会有各类英文单词的出现,而搜索引擎在分析文章内容的时候,如果英文单词前后都有一个半角空格的话就会被认为是中英文混排佳的结果,在【写给大家看的中文排版指南】一文里,明月就强调过博客文章排版好在 SEO 方面的重要意义,其中里面就提到了西文排版里关于英文单词要加前后空格的,大家可以看看此文,养成一个好的博客文章排版习惯,对提高博客用户体验度很有益处。

WordPress 在当前主题 functions.php 里添加自定义代码是个很强大的存在,但是因为 functions.php 文件时随着当前主题的更新、更换的,所以大家可以参考【如何方便的在更新主题时保留 functions.php 里的自定义】一文里的办法生成一个属于自己的自定义代码插件来使用,这样就不依赖于主题了,也不怕自己收集整理的实用自定义代码被不小心覆盖丢失了。

不废话了,继续话题,在当前主题 functions.php 文件中添加以下代码即可:

  1. //WordPress 文章中英文数字间自动添加空格(写入数据库)
  2. add_filter( 'wp_insert_post_data', 'fanly_post_data_autospace', 99, 2 );
  3. function fanly_post_data_autospace( $data , $postarr ) {
  4.         $data['post_title'] = preg_replace('/([\x{4e00}-\x{9fa5}]+)([A-Za-z0-9_]+)/u', '${1} ${2}', $data['post_title']);
  5.         $data['post_title'] = preg_replace('/([A-Za-z0-9_]+)([\x{4e00}-\x{9fa5}]+)/u', '${1} ${2}', $data['post_title']);
  6.         $data['post_content'] = preg_replace('/([\x{4e00}-\x{9fa5}]+)([A-Za-z0-9_]+)/u', '${1} ${2}', $data['post_content']);
  7.         $data['post_content'] = preg_replace('/([A-Za-z0-9_]+)([\x{4e00}-\x{9fa5}]+)/u', '${1} ${2}', $data['post_content']);
  8.         return $data;
  9. }

以上代码的功能主要用于在 WordPress 后台编辑时执行,也就是当我们发布、更新、保存文章的时候就会自动执行,写入数据库的内容都将是自动添加了空格的,并且处理的对象为文章标题与文章内容。也就是说只对新发布的文章生效,当然你也可以批量的更新一下文章也是可以生效的。

当然为了更加良好的兼容性或者另外一种方法,【泪雪博客】还提供了另外一种方法,就是不直接在写入数据库前执行,而是当 WordPress 输出文章内容的时候执行,代码如下:

  1. //WordPress 文章中英文数字间自动添加空格(不写入数据库)
  2. add_filter( 'the_content','fanly_post_content_autospace' );
  3. function fanly_post_content_autospace( $data ) {
  4.     $data = preg_replace('/([\x{4e00}-\x{9fa5}]+)([A-Za-z0-9_]+)/u', '${1} ${2}', $data);
  5.     $data = preg_replace('/([A-Za-z0-9_]+)([\x{4e00}-\x{9fa5}]+)/u', '${1} ${2}', $data);
  6.     return $data;
  7. }

这样的方式就是当前端显示的内容时才会执行自动给中英文数字间添加空格,其它地方是不会别执行的,同时只针对文章内容生效,文章标题无法被格式化。

以上两段代码实现的方式各有不同,可以选其一使用,也可以两者同时使用,前者直接将格式化后的内容保存到数据库中,不论以何种方式调用或输出 WordPress 文章内容都已经是有空格了的。所以大家在选择和使用上记得先测试一下效果。

今天分享给大家的这个“WordPress 文章中英文数字间自动添加空格”代码,明月感觉是目前网上分享的最简单、最稳定方法了,至少明月已经使用了近半个月了,非常的稳定,效果也很不错。唯一的遗憾就是不能自动批量的修正早期文章,这个应该是美中不足吧!

  • 博客公众号
  • 关注本博公众号
  • weinxin
  • 本博客小程序
  • 微信内浏览本博客
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:18   其中:访客  9   博主  9

    • BanYuner 4

      言外之意就是数据库的内容部分都修改了么?那我还是通过JS文件来实现好了

        • 明月登楼 博主

          @BanYuner 恩,数据库的内容是从部署这个代码开始的新文章都会修改,以前的文章在没有重新编辑的情况下还是以前的!

        • Koolight 6

          我感觉微信最新版发送消息之后,也有这个效果了!

          • 请输入您的QQ号 3

            雪泪这个很赞,比之前用的js版本要好多了,已更换。

            • 泪雪博客 4

              我也觉得我的这个方法特别的好,非常的好,反正比网上其它方法好太多了,哈哈哈哈

                • 明月登楼 博主

                  @泪雪博客 嘿嘿,借用了你的“东风”了!这个代码真心好,我还以为我还要自己手动加空格到很久呢? :neutral: :wink: :lol:

                • 银色月航 4

                  明月,每天一点小干货,方便你我他,哈

                  • 龙笑天 5

                    你这仅仅是把文章内容里的改变了下 而不是整个页面上所有内容都改变改变~

                    • 万正远洋 4

                      这个代码不错,简短又高效!还是写入数据库的!真心赞一个先! :wink:

                      • 西枫里博客 6

                        这个对SEO的左右我还真没留意过,回头去翻翻白皮书看看

                        • 懿古今 9

                          这个方法确实不错,代码很简单,功能很强大

                            • 明月登楼 博主

                              @懿古今 是的,我都是用了半个月才分享出来的,真心很不错!