WordPress 实现中英文数字之间自动加空格排版

通常来说中文与英文、中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁…

WordPress 实现中英文数字之间自动加空格排版

通常来说中文与英文、中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁琐和让人厌烦,所以今天龙笑天下就来跟大家介绍一下 WordPress 如何实现中英文数字之间自动加空格的排版技巧。几种方法,任选其一即可。(PS:其实很早就想加上这个功能了,但奈何懒癌发作…)

.singlemiddle-banner{margin-left:auto;margin-right:auto;overflow: hidden;}

方法 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');

另外,值得一提的是该函数也会暴露一个问题,具体见下文:

(全网独家)如何正确的避免你的 WordPress 管理员登录用户名被暴露-BG

(全网独家)如何正确的避免你的 WordPress 管理员登录用户名被暴露

(全网独家)如何正确的避免你的 WordPress 管理员登录用户名被暴露

昨晚在研究评论结构时,网站右键查看源代码,无意间发现自己的管理员用户名被暴露了… 图 1 评论中暴露登录用户名 如上图,在博主的评论的 class 里看到的 test10 是我本地的测试网站的管理…

第二步:引入 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 文章中英文数字间自动添加空格 – 泪雪博客
如何快速在文章中英文数字间自动添加空格 – 沈唁志

类别:WordPress函数讲解

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册