最近在开发一个站点,需要用wordpress程序来自动对发布文章增加标签,下面直接给大家分享下自己项目中写的代码,希望对大家有帮助。
add_action('save_post', 'default_category_and_tags');
function default_category_and_tags($post_id) {
global $wpdb;
// 设置默认分类ID
$default_category_id = 3019;
//此处还可以根据需要自己定义修改分类ID。
$post_title = get_post($post_id)->post_title;
// $content = get_post($post_id)->post_content;
wp_set_post_categories( $post_id, array( $default_category_id ) );
// 以下自动匹配已有相关标签
$i=0;
$taxonomy='post_tag';
$ptags = get_terms( array(
'taxonomy' => 'post_tag', // 这里指定标签的分类法
'hide_empty' => false,
) );
$cutText = mb_substr($post_title, 0, 2, "UTF-8");
/* 可以获取指定名称的标签
$ptags = get_terms( array(
'name' => $tag_names,
'taxonomy' => 'post_tag',
'hide_empty' => false,
));*/
foreach ($ptags as $tag ) {
// 如果文章标题出现了已使用过的标签,自动添加这些标签,这里也可以对内容进行匹配,下面的post_title需要换为content
if ( strpos($post_title, $tag->name) !== false && strpos($tag->name,'售后')===false){
if ($i == 1) { // 控制输出数量
break;
}
$tagname=$tag->name;
$i++;
}
}
$istags = wp_get_post_tags($post_id);//判断是否已经有标签
if($tagname && !$istags){
wp_set_post_tags($post_id, array($tagname.'售后',$tagname.'售后服务',$tagname.'售后维修',$tagname.'售后维修电话'), true );//这里直接固定了4个对应包括已有标签的新标签。
}
以上代码亲测可以用,希望可以帮到有这个需求的朋友。