每次写文章的时候,都需要手动给WordPress文章添加标签,这样既能给访问者明确这篇文章的重点,也能够给网站的SEO带来很多好处。
但是,每次都需要手动的添加耗费精力,升级版本之前每次可以点击标签下拉选择,现在版本更新了旧标签下来不知道躲哪里去了,好多文章都没有设置标签。那么,有没有可能实现自动为新文章添加标签的功能呢?
网络流传目前市面说有一个完美的插件simple tags,只要启用了就可以使用。但是应用中心找了下发现很不幸3周前作者刚升级了插件版本,对于php5.6以上才支持,不能兼容安装。看来只有够通过添加代码的方式添加完善这个需求了。
百度搜索出现热心网友搞了个代码自动加提取文章中的tag,只要放到function.php中,提交文章的时候,就会自动添加了。
来到你的主题function.php文件,将代码添加进去 :
/**
add_action('save_post', 'auto_add_tags');
WordPress 自动为文章添加已使用过的标签
https://www.wpdaxue.com/auto-add-tags.html
*/
function auto_add_tags(){
$tags = get_tags( array('hide_empty' => false) );
$post_id = get_the_ID();
$post_content = get_post($post_id)->post_content;
if ($tags) {
foreach ( $tags as $tag ) {
// 如果文章内容出现了已使用过的标签,自动添加这些标签
if ( strpos($post_content, $tag->name) !== false)
wp_set_post_tags( $post_id, $tag->name, true );
}
}
}
代码出自:http://wordpress.org/plugins/auto-add-tags/
感谢 @大朗博客 优化增强的版本:
修改后可控制标签输出数量。
代码如下:
// WordPress 自动为文章添加已使用过的标签
add_action('save_post', 'auto_add_tags');
function auto_add_tags(){
$tags = get_tags( array('hide_empty' => false) );
$post_id = get_the_ID();
$post_content = get_post($post_id)->post_content;
if ($tags) {
$i = 0;
foreach ( $tags as $tag ) {
// 如果文章内容出现了已使用过的标签,自动添加这些标签
if ( strpos($post_content, $tag->name) !== false){
if ($i == 5) { // 控制输出数量
break;
}
wp_set_post_tags( $post_id, $tag->name, true );
$i++;
}
}
}
}
但这样输出,会默认输出前几个标签,考虑到每次输出都是标签库里面的前几个标签,不利于 SEO ,增加了标签打乱功能。
标签打乱增强版:
// WordPress 自动为文章添加已使用过的标签
function array2object($array) { // 数组转对象
if (is_array($array)) {
$obj = new StdClass();
foreach ($array as $key => $val){
$obj->$key = $val;
}
}
else {
$obj = $array;
}
return $obj;
}
function object2array($object) { // 对象转数组
if (is_object($object)) {
foreach ($object as $key => $value) {
$array[$key] = $value;
}
}
else {
$array = $object;
}
return $array;
}
add_action('save_post', 'auto_add_tags');
function auto_add_tags(){
$tags = get_tags( array('hide_empty' => false) );
$post_id = get_the_ID();
$post_content = get_post($post_id)->post_content;
if ($tags) {
$i = 0;
$arrs = object2array($tags);shuffle($arrs);$tags = array2object($arrs);// 打乱顺序
foreach ( $tags as $tag ) {
// 如果文章内容出现了已使用过的标签,自动添加这些标签
if ( strpos($post_content, $tag->name) !== false){
if ($i == 5) { // 控制输出数量
break;
}
wp_set_post_tags( $post_id, $tag->name, true );
$i++;
}
}
}
}
最开始走了一道弯路,我是在本地记事本打开function.php 文件添加代码然后上传了网站服务器,测试了好几个网页文章,重新编辑更新后tag标签是可以加上去了,但每次后台都显示“更新失败”不能完全正常工作。多次尝试后才发现正确的添加代码方法:打开WordPress后台>>外观>>编辑>>模板函数function.php
感谢各路网络热心人生的分享,为wordpress爱好者提供了不少便利。