原文出自WP大学的文章,考虑到不能控制数量,遂修改了一下。
修改后可控制标签输出数量。
代码如下:
- 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 ,增加了标签打乱功能。
标签打乱增强版:
- 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;
- $count = count(wp_get_post_tags($post_id));
- if ($tags && $count < 3) {
- $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++;
- }
- }
- }
- }
这样既可以控制数量,又保证了每次出来的标签都是重复。
原文出自:
https://www.wpdaxue.com/auto-add-tags.html
评论 (1)