質問: 毎月のアーカイブで特定のカテゴリの投稿を非表示にする方法 私は私のワードプレスサイトで21のテーマを使っています。投稿には、2つのカテゴリがあります。一つはブログ、もう一つはニュースです。毎月のアーカイブにはすべてのカテゴリの投稿が表示されますが、毎月のアーカイブにはブログカテゴリの投稿のみが表示されるようにします。これをどうやってやるの?改ページ用のwp_pagenaviプラグインもインストールしました。
回答: その方法は2つあります。アーカイブページを表示するときにフィルタを使用してクエリを変更できます。カテゴリのブログのidを見つける必要があります( get_term_by を使ってスラッグから取得できます)。あるいは、idで特定のカテゴリを除外することもできます。add_action( 'pre_get_posts', 'my_change_query'); function my_change_query($query){ if(is_archive()){ $blog_term = get_term_by('slug', 'blogs', 'category'); $blog_term_id = $blog_term->term_id; $query->set('cat', $blog_term_id);//include category with id $blog_term_id //$query->set('cat','-'.$blog_term_id);//exclude category with id $blog_term_id } return $query }; もっと一般的には、archive.phpテンプレートファイルを変更して、if(have_posts())の真上に以下を挿入することができます。global $wp_query; $args = array_merge( $wp_query->query, array( 'category_name' => 'blogs' ) ); query_posts( $args ); query_posts および wp_query のコーデックスを参照してください。