web-dev-qa-db-fra.com

Exclure la catégorie de la page d'accueil, afficher les messages sur sa propre page?

J'ai créé une nouvelle catégorie avec l'ID 57, comment puis-je exclure cette catégorie de la page d'accueil/du blog, puis répertorier les publications de cette catégorie sur sa propre page?

voici à quoi ressemble mon index.php

<?php
            $popular_count = 1;
            query_posts( array( 'orderby' => 'comment_count','posts_per_page' => 6 ) );
            if ( have_posts() ) : while ( have_posts() ) : the_post();
            ?>

alors, comment ajouter ce peu de code est un peu déroutant

1
Joe

Plutôt que d'effectuer une requête distincte, pour exclure un terme de catégorie (ou de toute autre taxonomie), vous pouvez vous connecter à pre_get_posts:

add_action('pre_get_posts', 'wpse41820_exclude_cat_from_front_page');
function wpse41820_exclude_cat_from_front_page( $query ){
    if( $query->is_main_query() && is_front_page() ){
        $tax_query = array(array(
            'taxonomy' => 'category',
            'field' => 'id',
            'terms' => array( 57 ),
            'operator' => 'NOT IN'
           ));

        $query->set('tax_query',$tax_query);
    }
    return $query;
}

Pour exclure un slug, modifiez le $tax_query en conséquence:

        $tax_query = array(array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => array( 'term-slug' ),
            'operator' => 'NOT IN'
           ));
3
Stephen Harris

Utilisez une requête personnalisée pour les deux.

   <?php if (have_posts()) : 

        $args = array(
                          'orderby' => 'comment_count',
                      'posts_per_page' => 6,
                      'cat' => -57,
                    );

        $my_query = new WP_Query($args);

        while ($my_query->have_posts()) : $my_query->the_post(); ?>

Le signe négatif devant la catégorie dénote une exclusion.

J'ai fait la modification pour travailler avec le code que vous avez fourni.

0
Kyle