在明月登楼博客看到的“WordPress 教程:实现在中英文间自动加入空格排版功能”这篇文章,以前也见过相关文章,没有引起重视。最近运营博客一段时间发现,中英文章排版混在起确实丑,每次都是手动敲空格来解决,今天看到了就把这个问题给解决了。
操作方法
在当前主题 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;
- }
这样的方式就是当前端显示的内容时才会执行自动给中英文数字间添加空格,其它地方是不会别执行的,同时只针对文章内容生效,文章标题无法被格式化。大家在选择和使用上记得先测试一下效果吧。
今天分享给大家的这个“WordPress 教程:实现在中英文间自动加入空格排版功能”代码,wosn 感觉是目前网上分享的最简单、最稳定方法了。
原文链接:https://blog.ymanz.com/wp/6803.html
评论