term_is_ancestor_of()


WordPressのterm_is_ancestor_of()関数は、指定されたタームがもう一つのタームの祖先であるかを判定するために使用されます。

構文

term_is_ancestor_of( int|object $term1, int|object $term2, string $taxonomy = '' );

引数の説明:

  • $term1 (int|object) — 判定する祖先のタームIDまたはタームオブジェクト。
  • $term2 (int|object) — 判定される子タームのIDまたはタームオブジェクト。
  • $taxonomy (string) — 使用するタクソノミー(省略可能)。

例 1: タームが別のタームの祖先かどうかを判定する

以下のコードは、指定されたタームが祖先かどうかを確認します。

<?php
if ( term_is_ancestor_of( get_term_by( 'slug', 'parent-term', 'category' ), get_term_by( 'slug', 'child-term', 'category' ) ) ) {
    echo '祖先タームです。';
}
?>

例 2: 投稿タクソノミー内で祖先タームを判定する

タクソノミーを指定して使用する例。

<?php
if ( term_is_ancestor_of( get_term_by( 'slug', 'parent-tag', 'post_tag' ), get_term_by( 'slug', 'child-tag', 'post_tag' ) ) ) {
    echo '祖先タグです。';
}
?>

例 3: カスタムタクソノミーでの使用例

カスタムタクソノミーで祖先タームを確認します。

<?php
if ( term_is_ancestor_of( get_term_by( 'id', 10, 'custom_taxonomy' ), get_term_by( 'id', 20, 'custom_taxonomy' ) ) ) {
    echo 'このタームは祖先です。';
}
?>

例 4: 祖先タームに基づく条件付き表示

タームの祖先関係に基づいて特定の内容を表示します。

<?php
if ( term_is_ancestor_of( get_term_by( 'id', 5, 'category' ), get_term_by( 'id', 15, 'category' ) ) ) {
    echo '<div>祖先タームの内容を表示します。</div>';
}
?>

例 5: ループ内で祖先関係をチェックする

ループ内で各タームを確認する例。

<?php
$terms = get_the_terms( get_the_ID(), 'category' );
foreach ( $terms as $term ) {
    if ( term_is_ancestor_of( get_term_by( 'slug', 'specific-parent', 'category' ), $term ) ) {
        echo 'この投稿は特定の祖先タームに属しています。';
    }
}
?>

注意点:

  • $term1と$term2が異なるタクソノミーの場合、正確な結果が得られない可能性があります。
  • 使用するタームオブジェクトは、get_term()やget_term_by()を利用して取得することを推奨します。

関連機能: