web-dev-qa-db-fra.com

WP_Query ne charge pas le nombre spécifié de messages

J'ai sur ma section de page avec les messages choisis au hasard via new WP_Query. Le problème est que l'attribut 'posts_per_page' ne fonctionne pas. Voici mon code:

<div id="featured">
    <?php 

        $args = array(
            'post_type' => 'post',
            'orderby'   => 'Rand',
            'posts_per_page' => 4,
            'nopaging' => true,
            );

        $the_query = new WP_Query( $args );
        if ( $the_query->have_posts() ) {

            echo '<div style="table full">';

            while ( $the_query->have_posts() ) {

                $the_query->the_post(); 

            ?>

                <div class="featcell" style="background: url(<?php the_post_thumbnail_url(); ?>) center center">
                    <a class="featartlink" href="<?php echo get_permalink(); ?>"><?php echo get_the_title(); ?></a>
                </div>

            <?php 

            }

            echo '</div>';

            wp_reset_postdata();

        } 

    ?>
</div>

Le résultat du script ci-dessus est que le script charge toutes les publications de la base de données. Le script est placé sous l'article sur une seule page. Qu'est-ce que je fais mal? Il semble que tout va bien, mais ce n'est pas le cas! Merci pour l'aide.

1
X9DESIGN

nopaging désactive la pagination, et posts_per_page est un paramètre de pagination. Vous lui dites d'ignorer la pagination et de renvoyer tous les messages.

3
Milo

Je ne sais pas pourquoi, mais après quelques tests, j'essaie d'utiliser aussi la fonction get_posts() et tout fonctionne bien maintenant. Je me demande simplement pourquoi new WP_Query ne veut pas travailler.

Voici le code correct avec la fonction use get_posts().

<div id="featured">

    <?php 

        global $post;

        $args = array( 

            'post_type' => 'post', 
            'posts_per_page' => 4, 
            'orderby' => 'Rand',

        );

        $Rand_posts = get_posts( $args );
        if ( $Rand_posts ) : 

            echo '<div style="table full">';

            foreach ( $Rand_posts as $post ) : setup_postdata( $post ); ?>

                <div class="featcell" style="background: url(<?php the_post_thumbnail_url(); ?>) center center">
                        <a class="featartlink" href="<?php echo get_permalink(); ?>"><?php echo get_the_title(); ?></a>
                </div>

            <?php endforeach; wp_reset_postdata(); 

            echo '</div>';

        endif;

    ?>

</div>
1
X9DESIGN