WordPress 自動為新文章添加已使用過的標簽

每次都要手動給文章添加標簽,很麻煩?不知文章是否出現以前用過的標簽,怎麼辦?以下代碼就可以解決這些問題,它會在你發佈/保存文章時,檢測文章的內容中,是否出現曾經使用過的標簽,如果出現,就自動為文章添加這些標簽。

auto-add-tags-wpdaxue_com

將代碼添加到主題的 functions.php 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * WordPress 自動為文章添加已使用過的標簽
 * https://www.wpdaxue.com/auto-add-tags.html
 */
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) {
		foreach ( $tags as $tag ) {
			// 如果文章內容出現瞭已使用過的標簽,自動添加這些標簽
			if ( strpos($post_content, $tag->name) !== false)
				wp_set_post_tags( $post_id, $tag->name, true );
		}
	}
}

/**
* WordPress 自動為文章添加已使用過的標簽
* https://www.wpdaxue.com/auto-add-tags.html
*/
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) {
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/

感謝 @大朗部落格 優化增強的版本:

修改後可控制標簽輸出數量。

代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 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++;
      }
    }
  }
}

// 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 ,增加瞭標簽打亂功能。

標簽打亂增強版:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 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++;
      }
    }
  }
}

// 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++;
}
}
}
}

@大朗部落格:http://www.darlang.com/2018/01/wordpress-automatically-tags-new-posts-controllable-number-of-tags/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *