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

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

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

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

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

<?php // 投稿に紐づくタームの取得
$taxonomy_slug = 'product-categories'; // タクソノミーのスラッグを指定
$post_terms = wp_get_object_terms($post->ID, $taxonomy_slug); // タクソノミーの指定
if( $post_terms && !is_wp_error($post_terms)) { // 値があるときに作動
$post_terms_slug = array(); // 配列のリセット
foreach( $post_terms as $value ){ // 配列の作成
$post_terms_slug[] = $value->slug; // タームのスラッグを配列に追加
}
}
// タクソノミーに登録のあるすべてのタームと比較
$taxonomy_terms = get_terms( $taxonomy_slug, '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 />';
}
}
?>

タクソノミーの指定は $taxonomy_slug = 'product-categories’;product-categories を変更してください。

まとめ

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