web-dev-qa-db-ja.com

毎月のアーカイブで特定のカテゴリの投稿を非表示にする方法

私は私のワードプレスサイトで21のテーマを使っています。

投稿には、2つのカテゴリがあります。一つはブログ、もう一つはニュースです。

毎月のアーカイブにはすべてのカテゴリの投稿が表示されますが、毎月のアーカイブにはブログカテゴリの投稿のみが表示されるようにします。

これをどうやってやるの?

改ページ用のwp_pagenaviプラグインもインストールしました。

3
Ahmad

その方法は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 のコーデックスを参照してください。

6
Stephen Harris