Codexに載っている方法ですが、自分用のメモに。
一応メモっているんですが、忘れていて検索してしまうこともありまして、その際に自分なら検索時に使いそうなワードで記事を作ればこの記事が表示され、「ああ、書いてた」といろいろ思い出せるかなと。もちろん、上の方に表示されていればですが。
親カテゴリーのスラッグで分岐
実現したかったことは、以下のことです。
・「カテゴリーA」を親カテゴリとし、「カテゴリーa1」「カテゴリーa2」をその子カテゴリーとして作成
・「カテゴリーA」の子カテゴリーは今後も増えて行く予定
・「カテゴリーA」とそこの属する子カテゴリーをまとめて分岐させたい
・IDではなく、カテゴリーのスラッグをキーにしたい
IDを個別に指定するのは後の作業が大変なので、親カテゴリーで分岐させたほうが楽、というのが理由です。in_categoryでは実現できませんので、Codexの下記のページの「子カテゴリー内の投稿かテストする」の箇所に載っている方法を利用。
具体的には以下のコードをfunctions.phpに記述します。
function post_is_in_descendant_category( $cats, $_post = null )
{
foreach ( (array) $cats as $cat ) {
// get_term_children() accepts integer ID only
$descendants = get_term_children( (int) $cat, 'category');
if ( $descendants && in_category( $descendants, $_post ) )
return true;
}
return false;
}
その上で、分岐条件の部分に以下のコードを記述。
<?php if ( in_category( '親カテゴリーのスラッグ' ) || post_is_in_descendant_category( get_term_by( 'slug', '親カテゴリーのスラッグ', 'category' ))): ?>
カテゴリーAとこのカテゴリーを親に持つ子カテゴリーであれば表示する内容
<?php endif; ?>
以上で、分岐できます。Codexを見ればだいたい載ってますね。感謝です!
9人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。