概要
cat_is_ancestor_of
関数は、指定したカテゴリが他のカテゴリの子孫であるかどうかをチェックするための関数です。この関数は、以下のような機能を実装する際によく使われます。
- カテゴリの階層構造の確認
- カテゴリに基づいたフィルタリング機能
- ナビゲーションメニューのカスタマイズ
- 特定のカテゴリに基づく投稿の表示
- カテゴリタグの関連性を示す
- サイドバーに表示するウィジェットの制御
- SEO対策としてカテゴリの整理
- 投稿作成時のカテゴリ選択の補助
構文
cat_is_ancestor_of( $ancestor, $descendant );
パラメータ
$ancestor
(int) – 親となるカテゴリのID。$descendant
(int) – 子孫となるカテゴリのID。
戻り値
bool
– 子孫関係があればtrue
、そうでなければfalse
を返す。
関連する関数
使用可能なバージョン
- この関数はWordPress 4.5以降で使用可能です。
コアファイルのパス
wp-includes/category.php
サンプルコード
サンプルコード1: カテゴリの子孫関係をチェック
$parent_id = 5; // 親カテゴリのID
$child_id = 10; // 子カテゴリのID
if (cat_is_ancestor_of($parent_id, $child_id)) {
echo 'カテゴリは子孫関係です。';
} else {
echo 'カテゴリは子孫関係ではありません。';
}
このコードは、指定した親カテゴリ(ID:5)が子カテゴリ(ID:10)の親であるかどうかを確認します。
サンプルコード2: 投稿が特定のカテゴリに属しているか確認
$ancestor_id = get_cat_ID('ニュース'); // 親カテゴリのIDを取得
$current_category_id = get_the_category()[0]->term_id; // 現在の投稿のカテゴリID
if (cat_is_ancestor_of($ancestor_id, $current_category_id)) {
echo 'この投稿はニュースカテゴリの子孫です。';
}
このコードは、現在の投稿が「ニュース」カテゴリの子孫であるかどうかをチェックします。
サンプルコード3: カテゴリ選択ウィジェットの表示制御
function custom_category_widget($instance) {
if (cat_is_ancestor_of(3, get_query_var('cat'))) {
echo 'このウィジェットは指定したカテゴリのページでのみ表示されます。';
}
}
add_action('widgets_init', 'custom_category_widget');
このコードは、特定のカテゴリ(ID:3)のページでのみウィジェットが表示されるように調整します。
サンプルコード4: カスタムナビゲーションメニューの生成
function custom_menu_filter($items) {
foreach ($items as $item) {
if (cat_is_ancestor_of(2, $item->object_id)) {
$item->classes[] = 'ancestor-menu-item'; // カテゴリが子孫の場合、特定のクラスを追加
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'custom_menu_filter');
このコードは、ナビゲーションメニューの項目をフィルタリングし、特定の子孫カテゴリに基づいてクラスを追加します。
サンプルコード5: カテゴリの配列をループ
$categories = get_categories();
foreach ($categories as $category) {
if (cat_is_ancestor_of(1, $category->term_id)) {
echo $category->name . 'は親カテゴリ1の子孫です。';
}
}
このコードは、すべてのカテゴリをループし、親カテゴリ(ID:1)の子孫である場合にそのカテゴリ名を表示します。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
非推奨・削除されたバージョン
- 現在のところ、
cat_is_ancestor_of
関数は非推奨または削除されたバージョンはありません。