如何实现 WordPress 文章和标题中英文数字间自动添加空格?

不知道大家在浏览文章时有没有注意到,一些作者编辑的文章格式都非常的有规矩,特别是在中文、英文、数字之间用空格隔开,使得读者在观感和阅读上显得更加分明,而且整体的排版更加的好看,但是如果我们在编写文章的时候手动去一个一个添加的话,又会显得特别的繁琐且降低我们的写作效率。

所以博主这里提供一个极简的方法来实现这样的一个排版个功能。方法很简单,在当前主题 functions.php 文件中添加以下代码即可:

方法 1:WordPress 文章中英文数字间自动添加空格(写入数据库)

//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 输出文章内容的时候执行,代码如下:

方法 2: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;
}

以上两段代码实现的方式各有不同,根据需要选其一使用即可,也可以两者同时使用。

当然,有的人不想写入到 functions.php 文件中,也可以,就是将以上两段代码制作成小插件即可,这样就不怕以后主题更新了。至于嫌插件安装太多影响 WordPress 的速度,这里就根据自己需求选择吧,效果都是一样的。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 如何实现 WordPress 文章和标题中英文数字间自动添加空格?

发表回复