cat_is_ancestor_of()


WordPress関数cat_is_ancestor_of()は、特定のカテゴリが別のカテゴリの祖先であるかを確認するために使用されます。この関数は、階層的なカテゴリ構造を持つ場合に便利です。

シンタックス

cat_is_ancestor_of( int|WP_Term $ancestor, int|WP_Term $descendant )

引数の説明:

  • $ancestor (int|WP_Term) — 確認する祖先カテゴリのIDまたはオブジェクト。
  • $descendant (int|WP_Term) — 確認する子カテゴリのIDまたはオブジェクト。

使用例

例 1: 祖先カテゴリを確認する

特定のカテゴリが祖先であるかを確認します。

<?php
if ( cat_is_ancestor_of( get_category_by_slug( 'parent-category' ), get_category_by_slug( 'child-category' ) ) ) {
    echo 'このカテゴリは祖先です。';
}
?>

例 2: 投稿のカテゴリをチェックする

現在の投稿のカテゴリに祖先カテゴリが含まれているか確認します。

<?php
$post_categories = wp_get_post_categories( get_the_ID(), array( 'fields' => 'ids' ) );
if ( in_array( get_cat_ID( 'parent-category' ), $post_categories ) && cat_is_ancestor_of( get_cat_ID( 'parent-category' ), $post_categories[0] ) ) {
    echo '投稿は祖先カテゴリに属します。';
}
?>

例 3: カテゴリリストのフィルタリング

特定の祖先カテゴリに属するカテゴリのみを取得します。

<?php
$categories = get_categories();
foreach ( $categories as $category ) {
    if ( cat_is_ancestor_of( get_cat_ID( 'parent-category' ), $category->term_id ) ) {
        echo $category->name;
    }
}
?>

例 4: ウィジェット表示の条件付け

特定の祖先カテゴリに基づいてウィジェットを表示します。

<?php
if ( is_category() && cat_is_ancestor_of( get_cat_ID( 'parent-category' ), get_queried_object_id() ) ) {
    dynamic_sidebar( 'sidebar-category' );
}
?>

例 5: メニュー項目の強調表示

祖先カテゴリに属する場合、特定のメニュー項目を強調表示します。

<?php
if ( is_category() && cat_is_ancestor_of( get_cat_ID( 'menu-category' ), get_queried_object_id() ) ) {
    echo '<li class="current-menu-item">メニュー項目</li>';
} else {
    echo '<li>メニュー項目</li>';
}
?>

注意事項

  • 引数にはカテゴリのIDまたはWP_Termオブジェクトを渡す必要があります。
  • 階層的でないカテゴリ構造では使用が制限されます。

関連機能: