2013年07月24日

特定の親カテゴリとその子カテゴリのみに反映させたいとき

特定の親カテゴリとその親カテゴリに属する子カテゴリの個別記事(single.php)だけに反映させるときの条件分岐のソース。

functions.phpに記述

function post_is_in_descendant_category( $cats, $_post = null ){
   foreach ( (array) $cats as $cat ) {
         $descendants = get_term_children( (int) $cat, 'category');
          if ( $descendants && in_category( $descendants, $_post ) )
              return true;
   }
   return false;
}

テンプレートの表示したい場所に以下を記述。

1.カテゴリIDで記述する場合
例:親カテゴリのIDが7

<?php if ( in_category(7) || post_is_in_descendant_category(7)) {

//ここに表示したいソースを書く 

} ?>

2.カテゴリのスラッグで記述する場合
例:親カテゴリのスラッグがwordpress


<?php if ( in_category('wordpress') ||
post_is_in_descendant_category( get_term_by( 'slug', 'wordpress', 'category' ) )) { 

//ここに表示したいソースを書く 

} ?>


3.カテゴリ名で記述する場合
例:親カテゴリ名がワードプレス

<?php if ( in_category( 'ワードプレス' ) ||
post_is_in_descendant_category( get_term_by( 'name', 'ワードプレス', 'category' ) )) { 

//ここに表示したいソースを書く 

} ?>


参考リファレンス