如何使用get_the_terms()获取注册已发表文章的术语列表


这是7音符。在研究了各种东西之后,它不是wordpress功能的标准设备,因此我强行购买了它。

您可以获取已注册术语的列表,并且仅包含带有get_terms()的文章(包括草稿和私人文章)的术语,而
如果它是get_terms(),则不可能仅获得注册已发表文章的条款。

解决方案

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
$posttype = 'ここにポストタイプ';    // 投稿タイプ
$taxonomy = 'ここにタクソノミー';    // タクソノミー

$posts = get_posts( array(
  'post_type' => $posttype,
  'taxonomy' => $taxonomy,
  'posts_per_page' => -1,        // 「-1」で全投稿取得
  'post_status' => 'publish',    // ←重要:公開記事のみ
));
foreach ( $posts as $post ){
  $pub_term = get_the_terms($post->ID,$taxonomy,);  /* 投稿IDをひとつずつチェック */
  foreach ( $pub_term as $key => $value ){          /* 取得したターム情報でループ */
    if($value->parent == "0"){                      /* 私は親タームのみを取得したかったので、ifをかましていますが必要なければとばしてください。 */
      $tarm_list[$value->slug] = $value->name;  /* 連想配列として、タームのスラッグとターム名を配列に格納 */
    }
  }
}

var_dump($tarm_list);
// (例)出力結果
// array(2) { ["blog"]=> string(9) "ブログ" ["news"]=> string(9) "お知らせ" }

// (使用例)
echo "<ul>";
foreach($tarm_list as $sluga => $namea){
    echo "<li>".$sluga."は".$namea."</li>";
}
echo "</ul>";
// (例)結果
/*
<ul>
  <li>blogはブログ</li>
  <li>newsはお知らせ</li>
</ul>
*/

说明

由于无法使用

get_terms()获取公共信息,因此请首先使用get_posts()获取目标文章列表。
从获取的商品列表中获取帖子ID,并使用get_the_terms()获取注册的期限信息。
一旦获得术语信息,请从中提取必要的信息(在上面的示例中为子句和名称)并将其存储在关联数组中。
(因为我只想获取父项,所以我放置了一个if语句。)
您要做的就是使用创建的关联数组,根据需要对其进行处理,然后将其吐出。

由于它是作为关联数组获取的,因此如果有重复项,它将被自动覆盖,因此重复项最终将消失,但是
如果要使用普通数组等获取它,请添加以array_unique()等结尾的删除重复项的过程。

大松

?每天在Qiita上发布!!?
[面向初学者]用于WEB生产的各种小型技术