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.
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.
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>