WordPressで親カテゴリのスラッグで分岐:メモ

WordPress
WordPress

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への投稿など他サービスとの連動は一切ありません。

コメント欄