在文章中给中文和英文之间添加一个空格,会让文章更加美观,让读者阅读有更好的体验。
网上有很多 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 文章中英文数字间自动添加空格(不写入数据库)
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;
}
此方法不写入数据库,也就是说当我们在发布文章的时候是不执行的,而是在输出文章的时候执行。
以上两种方法均可实现中英文数字之间自动空格,注意:主题升级会导致代码失效, zibll 主题可以新建 func.php 文件,更新不会被覆盖。
© 版权声明
分享是一种美德,转载请保留原链接。
THE END
暂无评论内容