web-dev-qa-db-fra.com

Limiter le nombre de publications dans WP_Query conduit à un résultat inattendu

Ce qui suit est censé afficher 10 messages.

Parfois, il affiche 11, parfois 12, et parfois les 10 postes souhaités. Il se comporte de la même manière si j'échange posts_per_page pour showposts ou numberposts.

Où dois-je rechercher le problème?

<ul>
    <? wp_reset_query(); ?> 
    <?  $args = array(
        'orderby'           => 'Rand',
        'posts_per_page'    => '10',
    );
    $query_footerFavorite = new WP_Query($args);

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

        <li>
            <a href="<? the_permalink(); ?>" title="<? the_title_attribute(); ?>">
                <? the_title(); ?>
            </a>
        </li>

    <? endwhile; ?>
    <? wp_reset_query(); ?>                 
</ul>

Edit: Il semble qu'il y ait un problème avec la posts_per_page, voir print_r($query_footerFavorite):

WP_Query Object ( [query_vars] => Array ( [orderby] => Rand [posts_per_page] => 10 [error]
1
Ben

Le comportement attendu de posts_per_page consiste à NE PAS compter les posts collants. Ceci peut être résolu avec 'ignore_sticky_posts' => 1, mais les messages ne restent pas en haut du menu. (Dans le ticket trac pour les posts collants , cette question est discutée.)

Il existe des solutions de contournement telles que this one , mais elles me semblent toutes un peu hacky. Personnellement, j'essaie de gérer le comportement attendu et de styler la classe sticky post.

showposts est obsolète car WP2.1 et numberposts ne semble être qu'un paramètre valide pour get_posts(). (Même si je ne suis certes pas sûr de savoir pourquoi, le Codex ne mentionne pas cette question.)

2
mrwweb