カテゴリーの子か孫かアーカイブで判断するコードcat_is_ancestor_of

is_categoryとin_categoryの違いや使い方、条件分岐、複数指定、子孫カテゴリがある場合などなど

<?php if (is_category(5) || cat_is_ancestor_of(5, $cat)) { ?>
skyまたはskyの子孫となるカテゴリ一覧ページで表示される部分
<?php } ?>

ただ プリゲットポストpre_get_posts
で使えない

海外のサイトで発見

https://wordpress.stackexchange.com/questions/46008/how-to-check-if-a-child-category-is-being-queried

function change_number_of_posts($query) {
    if ($query->is_category){
         $cat = get_queried_object();
         $cat_id = (int) $cat->term_id;

         if( $query->is_category('recipes') || $query->is_category('product-reviews')){
              $query->query_vars['posts_per_page'] = -1; 
         }elseif(cat_is_ancestor_of(6,$cat_id)){
              $query->query_vars['posts_per_page'] = -1; 
         }
    }

    return $query;
}

add_filter('pre_get_posts', 'change_number_of_posts'); 

だもんでwelcart用にこうなった

		//welcart用
 if ($query->is_category){
	 $cat = get_queried_object();
         $cat_id = (int) $cat->term_id;
	if (is_category(287) ||
		cat_is_ancestor_of(287, $cat_id) && $query->is_main_query() ) {
$query->set('posts_per_page', 12 );
$query->set('meta_key','release');		
$query->set('orderby', array('meta_value' => 'DESC', 'date' => 'DESC') );//ブログはmeta_key release を使わないから'date' => 'DESC'が適用
  }
 }