特定のカテゴリーの子孫カテゴリーかを判定する関数を作ったのでメモ。本当はWordPressをECサイトにするWelcartで使うため用意したんですけど、「あれ、WordPressそのものでも使えるのでは」ということで。条件分岐とかにどうぞ。カスタム分類でも使えます。子孫カテゴリーかを判定する関数以下のソースコードをfunctions.phpに貼り付けて使います。function is_term_tree($root_term_slug = 'item') { $check_result = false; $id; $tax_slug; if(is_category()){ $tax_slug = "category"; $id = get_query_var('cat'); }else if(is_tax()){ $tax_slug = get_query_var('taxonomy'); $term_slug = get_query_var('term'); $term = get_term_by("slug",$term_slug,$tax_slug); $id = $term->term_id; } $current_term = get_term($id,$tax_slug); $current_term_id = $current_term->term_id; if(is_category() || is_tax()) { $root_term = get_term_by('slug', $root_term_slug, $tax_slug); $root_term_id = $root_term->term_id; if($current_term_id == $root_term_id) { $check_result = true; } else { $ancestors_ids = get_ancestors($current_term_id, $tax_slug); foreach($ancestors_ids as $anc) { if($anc == $root_term_id) { $check_result = true; break; } } } } return $check_result;}引数に親カテゴリーのスラッグを指定して、カテゴリーアーカイブで以下のように関数を呼び出します。<?php if(is_term_tree('web')) : ?><p>「Web」カテゴリーの子孫カテゴリーです。</p><?php endif; ?>これで特定のカテゴリーの子、孫、曾孫…、のカテゴリーかどうかを判定して条件分岐の処理が出来ます。ture、falseが返される条件引数に指定した親カテゴリーのアーカイブか、そのカテゴリーの子孫カテゴリーアーカイブだった場合に「true」が返されます。それ以外のカテゴリーや、アーカイブ(カテゴリー、もしくは階層持ちのカスタム分類)ではないページ、引数にスラッグを入れ忘れた場合に「false」が返されます。ソースコードの一部はこちらの記事を参考にしています。参考記事:もう迷わない!アーカイブページで現在のカテゴリ・タグの情報を簡単に取得する方法【WordPress】 | blog.ks-product.com