通过下面的代码可自动为WordPress文章添加已使用过的标签。
将代码添加到当前主题函数模板 functions.php 中:
代码一:
function zm_auto_add_tags() {
$post_id = get_the_ID();
if ( $post_id ) : $post_content = get_post( $post_id )->post_content;
if ( !empty( $post_content ) ) {
$tags = get_tags( array( 'hide_empty' => false ) );
if ( $tags ) {
$i = 0;
foreach ( $tags as $tag ) {
if ( strpos( $post_content, $tag->name ) !== false ) {
if ( $i == 6 ) break; // 添加数量
wp_set_post_tags( $post_id, $tag->name, true );
$i++;
}
}
}
}
endif;
}
add_action( 'save_post', 'zm_auto_add_tags' );
代码二:
打乱标签排序,每次更新都会变化。
function arraytoobject( $array ) {
if ( is_array( $array ) ) {
$obj = new StdClass();
foreach ( $array as $key => $val ) {
$obj->$key = $val;
}
} else {
$obj = $array;
}
return $obj;
}
function objecttoarray( $object ) {
if ( is_object( $object ) ) {
foreach ( $object as $key => $value ) {
$array[$key] = $value;
}
} else {
$array = $object;
}
return $array;
}
function zm_auto_add_tags() {
$post_id = get_the_ID();
if ( $post_id ) : $post_content = get_post( $post_id )->post_content;
if ( !empty( $post_content ) ) {
$tags = get_tags( array( 'hide_empty' => false ) );
if ( $tags ) {
$i = 0;
$arrs = objecttoarray( $tags );
shuffle( $arrs );
$tags = arraytoobject( $arrs );
foreach ( $tags as $tag ) {
if ( strpos( $post_content, $tag->name ) !== false ) {
if ( $i == 6 ) break; // 添加数量
wp_set_post_tags( $post_id, $tag->name, true );
$i++;
}
}
}
}
endif;
}
add_action( 'save_post', 'zm_auto_add_tags' );
使用时需要注意的是,当你的网站标签非常多,比如几千个,发表更新文章时可能会卡死。
文章标题:自动为WordPress文章添加标签