通常来说中文与英文、中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁琐和让人厌烦,所以今天龙笑天下就来跟大家介绍一下 WordPress 如何实现中英文数字之间自动加空格的排版技巧。几种方法,任选其一即可。(PS:其实很早就想加上这个功能了,但奈何懒癌发作...)
方法 1
第一步:html 或 body 标签中加入 han-la 类
在 html 标签中添加 class=”han-la”(一般在 header.php 文件中)。但是并不是硬性规定,现在很多博客都是通过功能函数动态加载 class 类,那么同样的,你也可以将这个 han-la 类动态加载到 body 中去。将类加载到 html 标签中的方法就不说了,这里说下怎么加载到 body 标签中,当然在这里,你的主题应该是使用了body_class()
这个标准函数的。
/**
* WordPress 实现中英文数字之间自动加空格排版 - 龙笑天下
* https://www.ilxtx.com/wordpress-text-autospace.html
* 在 body 标签中加入 han-la 类
*/
function lxtx_add_hanla_to_body_class( $classes ) {
$classes[] = 'han-la';
return $classes;
}
add_filter('body_class', 'lxtx_add_hanla_to_body_class');
另外,值得一提的是该函数也会暴露一个问题,具体见下文:
第二步:引入 js 文件
在 jquery 文件后面引入 text-autospace.min.js 或 text-autospace.js,下载地址为:https://github.com/mastermay/text-autospace.js。
/**
* WordPress 实现中英文数字之间自动加空格排版 - 龙笑天下
* https://www.ilxtx.com/wordpress-text-autospace.html
* 加入 text-autospace.min.js 文件
*/
function lxtx_styles_scripts() {
//全局加载 js 脚本
wp_enqueue_script( 'han-la-js', get_template_directory_uri() . '/includes/js/text-autospace.min.js', array( 'jquery' ), '', true );
}
add_action( 'wp_enqueue_scripts', 'lxtx_styles_scripts' );
注意修改代码中第 8 行的文件引用路径哦~
最后一步:添加 CSS 代码
将以下代码加入你的 style.css 文件中。
/* han-la lxtx */
body.han-la hanla:after {
content:" ";
display:inline;
font-family:Arial;
font-size:0.89em;
}
body.han-la code hanla,body.han-la pre hanla,body.han-la kbd hanla,body.han-la samp hanla {
display:none;
}
body.han-la ol > hanla,body.han-la ul > hanla {
display:none;
}
当然,如果在第一步中,你是将 han-la 类 class 加到 html 标签中的话,在这一步中你需要将以上 CSS 代码中的body
全改为html
。
友情提示:因为添加了 JS 和 CSS 文件,故要记得清空主题插件缓存、CDN 缓存及浏览器缓存哦~
方法 2
以上方法是把整个页面中的中英文之间都自动加上空格。还有另一种方法是,仅对文章部分的中英文进行排版加空格,方法如下。
/**
* WordPress 实现中英文数字之间自动加空格排版(不写入数据库) - 龙笑天下
* https://www.ilxtx.com/wordpress-text-autospace.html
*/
add_filter( 'the_content','lxtx_fanly_post_content_autospace' );
function lxtx_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;
}
方法 3
此方法是在 WordPress 后台编辑时执行,也就是当我们发布、更新、保存文章的时候就会自动执行,写入数据库的内容都将是自动添加了空格的,并且处理的对象为文章标题与文章内容。仅只对新发布的文章生效,之前发布的不生效。
/**
* WordPress 实现中英文数字之间自动加空格排版(写入数据库) - 龙笑天下
* https://www.ilxtx.com/wordpress-text-autospace.html
*/
add_filter( 'wp_insert_post_data', 'lxtx_fanly_post_data_autospace', 99, 2 );
function lxtx_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;
}
方法 4
此方法与方法 1 类似对任何 HTML 都可以使用。
<script src="https://cdn.staticfile.org/pangu/4.0.7/pangu.min.js"></script>
<script>
pangu.spacingPage();
</script>
上面是最基础的操作,全局都进行自动加空格处理,还有另外一些操作。当然,对应的标签属性可以根据你的实际系统中的修改。
pangu.spacingElementById('main'); //在 id=main 的区域进行自动加空格处理
pangu.spacingElementByClassName('comment'); //在 class=comment 的区域进行自动加空格处理
pangu.spacingElementByTagName('p'); //在标签 p 里面进行自动加空格处理
参考阅读
WordPress 实现中英文数字之间自动加空格排版 - boke112
WordPress 文章中英文数字间自动添加空格 - 泪雪博客
如何快速在文章中英文数字间自动添加空格 - 沈唁志
还没有人赞赏,快来当第一个赞赏的人吧!
声明:本文为原创文章,版权归龙笑天下所有,欢迎分享本文,转载请保留出处!