pre_get_postsで制御したループのクエリ内容が、カテゴリリストに反映されない。
-
お世話になります。
category.phpのループにpre_get_postsのフックを使って本年度のみの投稿を表示しているのですが、
その内容がサイドバーのカテゴリ項目に反映されません。具体的にはカテゴリ項目に、
・本年度の投稿数を表示
・投稿がゼロの項目は非表示
上記2点を反映させたいのですが、
投稿数は全年の総数が反映され、それに伴ってか2017年度の投稿がゼロのカテゴリ名も表示されてしまいます。項目はwp_list_categories()で出力してまして、
年度制御のようなパラメータがないためよくわからず困っております。
何か投稿年を結びつけるような方法はありますでしょうか?現状のコードはそれぞれ以下になります。
宜しくお願いいたします。category.php
<?php get_sidebar(); ?> <?php if (have_posts()) : while (have_posts()) : the_post();?> コンテンツ <?php endwhile; endif; ?>
functions.php
function change_posts_per_page($query) { if ( is_admin() || ! $query->is_main_query() ){ return; } $year = date('Y'); if ( $query->is_category() ) { $query->set( 'year' , $year ); $query->set( 'posts_per_page' , '-1' ); return; } } add_action( 'pre_get_posts', 'change_posts_per_page' );
sidebar.php
<ul class="sidebar"> <?php $args = array( 'show_count' => 1, // 投稿数を表示 'hide_empty' => 1, // 投稿数ゼロのカテゴリ名を非表示 ); ?> <?php wp_list_categories($args); ?> </ul>
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「pre_get_postsで制御したループのクエリ内容が、カテゴリリストに反映されない。」には新たに返信することはできません。