wordpress文章中英文数字前后自动添加空格

  • A+
所属分类:建博笔记

英文、数字前后添加空格的好处:

  • 从搜索引擎的角度来说,显得文章更加规范;
  • 从访客角度来说,内容更加分明,更容易阅读;
  • 从博主角度来说,文章格式更加规矩,整体排版更加分明;

操作方法一

打开主题根目录下的【functions.php】文件,在最后一个}前添加下面代码即可。

//WordPress 文章中英文数字前后自动添加空格(写入数据库)
add_filter( 'wp_insert_post_data', 'post_data_autospace', 99, 2 );
function 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;
}
特点
  • 当我们在后台发布、更新、保存文章时,此方法会自动执行,并将执行后的数据写入数据库
  • 此方法可处理文章标题与文章内容中的英文、数字
  • 此方法仅对新发布/更新/保存的文章有效,无法操作历史文章
  • 若想处理历史文章需要手动批量更新历史文章或配合【操作方法二】一起操作

操作方法二

打开主题根目录下的【functions.php】文件,在最后一个}前添加下面代码即可。

//WordPress 文章中英文数字前后自动添加空格(不写入数据库)
add_filter( 'the_content','post_content_autospace' );
function 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;
}
特点
  • 此方法仅在前端显示文章时执行,因此不会写入数据库
  • 此方法只能处理文章内容中的英文、数字,并不会处理文章标题中的英文、数字
  • 此方法由于在前端显示文章时执行,因此不存在适不适用历史文章的说法

一点建议

两种方法各有不同,择其一即可。有强迫症的童鞋也可以两个代码一起用,这样不管是新文章还是历史文章,都能被正确格式化。

发表评论

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

目前评论:2   其中:访客  1   博主  1

    • avatar Action 3

      这个和段落首行空两格一起加到functions.php,完美!

        • avatar isdola Admin

          @Action 首行缩进两空格直接在对应的标签CSS中设置text-indent:2em;就好了,这样更方便些。