web-dev-qa-db-fra.com

Il est possible de rencontrer des bugs horribles si je place une boucle principale qui utilise `query_posts` juste au-dessus de la boucle principale de bbPress?

C'est le code:

            <?php get_template_part( 'pagination', 'bbp_replies' ); ?>

            <?php query_posts('gdsr_sort=thumbs&post_type=bbp_reply&posts_per_page=2'); ?>
            <?php while ( have_posts() ) : the_post(); ?>
                <h2><?php  the_title(); ?></h2>
                <?php the_content(); ?>
            <?php endwhile; ?>
            <?php wp_reset_query(); ?>

            <?php while ( bbp_replies() ) : bbp_the_reply(); ?>

                <div class="topic-entry">

                    <div class="topic-author">
                        <?php bbp_reply_author_link( array( 'type' => 'avatar' ) ); ?>
                        <?php bbp_reply_author_link( array( 'type' => 'name' ) ); ?>
                        <?php printf( __( '%1$s', 'bbpress' ), get_the_date() ); ?>
                    </div>

                    <div class="topic-content">
                        <?php bbp_reply_content(); ?>
                        <span class="like-counter"><?php DisplayVotes(get_the_ID()); ?></span>
                    </div>

                        <?php bbp_reply_admin_links(); ?>

                    </div>

La première boucle query_posts liste les 2 réponses les plus votées. La seconde boucle bbPress liste toutes les autres réponses dans l’ordre DESC.

Vais-je rencontrer des bugs si j'ai ces deux boucles dans un même modèle de fichier?

1
janoChen

Je ne le ferais pas de cette façon, mais cela ne devrait pas être un problème. Lorsque votre fichier de modèle est exécuté, la "boucle principale réelle" contient déjà les publications de cette page. Vous exécutez ensuite query_posts() pour effectuer une deuxième requête, qui "masque" la boucle "réelle", mais une fois que vous avez terminé, vous exécutez la fonction wp_reset_query() qui reconstitue la boucle "réelle" en boucle active.

Cela créerait de la confusion et entraînerait des erreurs si vous intégriez les deux boucles, donc si vous exécutiez une autre query_posts() dans cette boucle principale where. Ensuite, vous devez utiliser get_posts() ou un WP_Query direct pour éviter les erreurs.

Personnellement, je n’appelle jamais query_posts() moi-même et utilise toujours get_posts(), car cela ne change aucune variable globale "derrière mon dos".

1
Jan Fabry