CG
(@du-bist-der-lenz)
カテゴリー一覧の前に、年/月/を挟むと、月別かつ特定のカテゴリーのアーカイヴ表示しませんか。
こんにちは
pre_get_posts アクションフックで日付アーカイブの場合の検索条件を変更変更すれば、date.php の中で特定のカテゴリの投稿のみを表示することができます。
参考:https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts
以下サンプルです。
function my_pre_get_posts($query){
if($query->is_date()){ // 日付アーカイブの場合
$query->set( 'category_name','カテゴリのslug' );
}
}
add_action( 'pre_get_posts', 'my_pre_get_posts' );
このコードには以下の制限があります。
・日付アーカイブすべてが指定したカテゴリのみになります。
・date.php では特定のカテゴリになりますが、ウィジットなどで月別アーカイブの件数を表示している場合、その件数は特定のカテゴリのみにはなりません。
余談ですが、query_posts は非推奨になっています。
投稿のリストを取得したい場合には get_pots を使われるといいと思います。
CG さん
コメントありがとうございます。
なんとなくですがCGさんのコメントのおかげで無事に期待動作を実現できました。
ありがとうございます。
munyagu さん
コメントありがとうございます。
また、詳細な解説と参考ページまでありがとうございます。
はじめはmunyaguさんの案を試していたのですが、期待動作にならず別の方法を取らせていただきました。
今回はご協力いただきありがとうございました。
ishitaka さん
コメントありがとうございます。
先日のトピックでもおせわになりました。
おそらくそのURL表示はパーマリンク設定に依存するものだと思っており、私の環境だとうまくいかないものだと思っており、別の方法にて無事に解決できました。
今回もご協力いただきありがとうございます。
コメントしていただいたみなさま、ご協力いただきありがとうございました。
無事に期待動作通り動くことを確認できました。
以下、メモとして載せます
date.phpで月別 特定カテゴリのみ表示させる方法
<?php
$year = get_query_var('year');
$monthnum = get_query_var('monthnum');
$arg = array(
'year' => $year,
'monthnum' => $monthnum,
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'blog'
);
$posts = get_posts( $arg );
if( $posts ): ?>
<?php
foreach ( $posts as $post ) :
setup_postdata( $post ); ?>
//表示させたい内容
<?php endforeach; ?>
<?php endif; wp_reset_postdata(); ?>