web-dev-qa-db-fra.com

Comment masquer une publication de catégorie spécifique dans mes archives mensuelles?

J'utilise le thème vingt-onze dans mon site wordpress.

Dans les messages, j'ai deux catégories. L'un est des blogs et l'autre est des nouvelles.

Les archives mensuelles affichent les publications de toutes les catégories alors que je souhaite que les archives mensuelles affichent uniquement les publications de la catégorie blogs.

Comment vais-je faire cela?

J'ai également installé le plugin wp_pagenavi pour la pagination.

3
Ahmad

Il y a deux façons de le faire:

Vous pouvez utiliser un filtre pour modifier la requête lors de l'affichage d'une page d'archive. Vous devrez trouver l'ID de votre catégorie "blogs" (vous pouvez l'obtenir auprès du slug en utilisant get_term_by ). Vous pouvez également exclure une catégorie particulière par 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
    };

ou, plus couramment, vous pouvez modifier le fichier modèle archive.php et insérer le texte suivant juste au-dessus de if(have_posts()).

global $wp_query;
$args = array_merge( $wp_query->query, array( 'category_name' => 'blogs' ) );
query_posts( $args );

Voir le Codex sur query_posts et WP_Query .

6
Stephen Harris