récupérer un message wordpress avec une boucle

Publié par Jean-Michel le

Je dois implémenter un curseur qui affichera 4 vignettes de publication d’une catégorie particulière dans chaque diapositive. Pour cela j’ai écrit ceci :

<ul class= "videoSlider">
                            <?php
                            $pStart = 0;
                            $flag = true;

                            while ($flag) {

                                query_posts('cat=14&posts_per_page=4&offset='.$pStart);

                                $pStart = + 4;
                            ?>


                                <li>
                                <?php
                                if (have_posts ()) {

                                    while (have_posts ()) {
                                        the_post();
                                ?>
                                        <div onclick="something()">

                                    <?php echo the_post_thumbnail(array(215, 190)); ?>
                                         </div>

                                <?php
                                    }
                                } else {
                                    $flag = false;
                                }
                                ?>
                            </li>


                            <?php

                            wp_reset_query();

                            } ?>

La structure dont j’ai besoin pour le curseur jquery ressemble à ceci :

                <ui>
                      <li>
                        <div>
                            thumb 1
                        </div>
                        <div>
                           thumb 2
                        </div>
                        <div>
                            thumb 3
                        </div>
                        <div>
                            thumb 4
                        </div>
                    </li>


                    <li>
                        <div>
                            thumb 5
                        </div>
                        <div>
                           thumb 6
                        </div>
                        <div>
                            thumb 7
                        </div>
                        <div>
                            thumb 8
                        </div>
                    </li>

                </ul>

Mais le code ne fonctionne pas pour une raison quelconque ! On dirait qu’après avoir généré quelques listes, l’exécution du code ne s’arrête pas et le navigateur se bloque. Ai-je mal utilisé la fonction : ‘ query_posts('cat=14&posts_per_page=4&offset='.$pStart)‘ ? Comment dois-je réellement l’implémenter ?

Lire également:  Mise en page du contenu de la publication Wordpress

Solution n°1 trouvée

Si vous avez beaucoup de publications, cette whileboucle externe continuera jusqu’à ce qu’elle soit interrogée sur chaque publication, 2 à la fois !

Il me semble que vous vous compliquez les choses, alors voici ce que je ferais à la place ;

global $wp_query;
query_posts('cat=14');

if ( have_posts() ):

    $last_post = $wp_query->post_count - 1; // index for the last post
    $counter = 0;

    echo '<ul class= "videoSlider">';

        while ( have_posts() ):

            the_post();

            if ($counter === 0)
                echo '<li>';

            echo '<div onclick="something()">';
            the_post_thumbnail(array(215, 190));
            echo '</div>';

            if ($counter === 3 || $last_post == $wp_query->current_post) {
                $counter = 0;
                echo '</li>'; // close the tag every 4th item, or if we're at the end of the loop

            } else {
                $counter++;
            }


        endwhile;

    echo '</ul>';

endif;
Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *