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

2018-06-01 15:43:24 浏览数 (1)

我们做网站内容,主要还是以文字图片混排来实现的,那么中英文混排的时候,有一个小细节不知道大家注意到没有,就是 WordPress 文章中英文数字间添加空格。一篇排版美观合理的文章,能给访客带来很好的阅读体验,同时可以提高二次回访率;同时搜索引擎在收录、索引文章时,对于文章排版的要求也是存在的,所以做好网站文章的排版是重要的“小细节”。所以今天用纯代码实现WordPress 文章中英文数字间自动添加空格。

对于这种中英文数字间添加空格的调整,不但有助于提升用户体验度,还对于 SEO 有一定好处,搜索引擎蜘蛛也会按照一定规律来读取文章内容。

方法很简单,是在当前主题 functions.php 文件中添加以下代码:

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

以上代码在 WordPress 后台编辑文章时执行,也就是发布、更新、保存文章的时候自动执行,只对新发布的文章生效,写入数据库的内容都将是自动添加了空格的,并且处理的对象为文章标题与文章内容。至于以前已经发布的文章,只有批量更新一下了。

另外一种方法是不直接写入数据库,而是当 WordPress 输出文章内容的时候执行,代码如下:

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

这样的方式是前端显示内容时才会执行,自动给中英文数字间添加空格,同时只针对文章内容生效,文章标题无法实现。

以上两段代码的实现方式不同,可以使用一种,也可以同时使用。

手动批量修正已发文章的方法:进入 wp 后台,标题打钩选择本页全部文章,点击“批量操作”旁边的倒三角选择“编辑”>应用,忽略中间的选项,直接点击最右侧的更新,这样可以一次性改正一页 20 个文章,重复操作就可以快速把以前的文章全都修正过来了。

本文代码来源自泪雪博客 https://zhangzifan.com/wordpress-post-autospace.html

WordPress 文章中英文数字间自动添加空格的代码,替代了插件,节约了系统资源,可以手动批量修正已发的文章,经过魏艾斯博客使用方法一(也就是修改结果写入数据库)把博客所有文章都批量修正了一遍,用户体验还是很不错的。

0 人点赞