web-dev-qa-db-fra.com

Afficher tous les messages de catégories spécifiques sur une page

Je souhaite afficher toutes les publications de catégories spécifiques sur une seule page. J'ai donc modifié le fichier page.php dans mon dossier de thèmes. J'ai ajouté une 'clause if' pour vérifier la page en cours d'affichage et charger toutes les publications des catégories suivantes.

<?php get_header(); ?>

<div id="primary">
    <div id="content" role="main">

<?php
    if (is_page(26)) {
        query_posts('cat=2,6,9,13&showposts=-1&orderby=date');    
        if (have_posts()) : 
            while (have_posts()) : 
                the_post(); 
                get_template_part( 'content', 'page' );
            endwhile; 
        endif;  
    } else {
        while ( have_posts() ) : 
            the_post(); 
            get_template_part( 'content', 'page' ); 
        endwhile; // end of the loop. 
    }
?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php get_footer(); ?>

Mais quand je charge ma page 26 rien ne sera affiché.

5
mybecks

Je conseillerais d'ajouter l'argument de la catégorie dans un tableau. Et n'utilisez pas query_posts. De plus, showposts est obsolète, utilisez plutôt posts_per_page.

$args = array (
    'cat' => array(2,6,9,13),
    'posts_per_page' => -1, //showposts is deprecated
    'orderby' => 'date' //You can specify more filters to get the data 
);

$cat_posts = new WP_query($args);

if ($cat_posts->have_posts()) : while ($cat_posts->have_posts()) : $cat_posts->the_post();
        get_template_part( 'content', 'page' );
endwhile; endif;
7
janw

Cela se produit car vous utilisez toujours query_posts(). Arrêter de faire ça. Utilisez WP_Query à la place:

$extra_posts = new WP_Query( 'cat=2,6,9,13&showposts=-1&orderby=date' );
if ( $extra_posts->have_posts() )
{
    while( $extra_posts->have_posts() )
    {
        $extra_posts->the_post();
        get_template_part( 'content', 'page' );
    }
    wp_reset_postdata();
}
1
fuxia