カテゴリページを表示するときに順番を変えていただきたい。
というときに、 表示中のカテゴリIDとスラッグ取得するのにあたふたしたのでメモ スラッグは、
$slug = $query->query_vars[‘category_name’]; で手に入る。
$cat = get_category_by_slug($slug); でカテゴリ情報を取得。
if ($cat->parent > 0) で親カテゴリがあるかどうかをチェック。
以下、そんな例です。
function my_pre_get_posts($query){ //カテゴリページでは人気順に表示する if ( $query->is_category() && $query->is_main_query()) { $slug = $query->query_vars['category_name']; $cat = get_category_by_slug($slug); if ($cat->parent > 0) { $query->set('orderby', 'meta_value_num' ); $query->set('meta_key', 'views' ); $query->set('order', 'DESC' ); } } } add_action( 'pre_get_posts', 'my_pre_get_posts' );
ちなみに、上記の例は、人気ページランキングを表示するウィジェットプラグイン WP-PostViews を使った時に使えます。