LAST UPDATE   | Posted by Takumi Hirashima

WordPress 特定のタームが投稿に紐づくタームに該当するかを判断する方法

WordPress で特定のタームが投稿に紐づくタームに該当するかを判断する方法を紹介します。
例えば、特定のターム一覧と投稿に登録されているタームの中に、該当するタームがあるかどうかを判別したい時に便利な方法です。

次のコードは、タクソノミースラッグ seminar-types に登録のあるタームを取得。その取得したタームと投稿に紐づくタームを比較して該当するタームがあるかを判断します。表示するためには次のコードを single.php など、投稿の詳細が取得できるテンプレートに追加します。

<?php 
  // 投稿に紐づくタームの取得
  $post_terms = wp_get_object_terms($post->ID, 'seminar-types'); // タクソノミーの指定
  if(!empty($post_terms)); // 値が空かどうかチェック
  if(!is_wp_error($post_terms)){ // WordPress Error ではないかチェック
    $post_terms_slug = array(); // 配列のリセット
    $x = 0; // 配列用のカウントをセット
    foreach( $post_terms as $value ){ // 配列の作成
      $post_terms_slug[$x] = $value->slug; // タームのスラッグを配列に追加
      $x++; // カウントに1を加える
    }
  }
  // タクソノミーに登録のあるすべてのタームと比較
  $taxonomy_terms = get_terms( 'seminar-types','hide_empty=0'); // タクソノミーに登録のあるタームの取得
  foreach ( $taxonomy_terms as $value ){
    if (in_array($value->slug, $post_terms_slug)) { // 配列に該当タームがあるかチェック
        echo '配列の中に '.$value->slug.' があります!<br />';
    } else {
        echo '配列の中に '.$value->slug.' がない...<br />';
    }
  }
?>

まとめ

WordPress で特定のタームが投稿に紐づくタームに該当するかを判断する方法を紹介しました。

スポンサーリンク