comment gérer la boucle en remplissant la structure de grille bootstrap dans wordpress?

Publié par Jean-Michel le

je fais un code qui peut remplir la structure de la grille d’amorçage que j’ai utilisée while et for loop dans mon code mais le problème est que for loop répète sa valeur dans la 2ème ligne

Structure de la grille

l’image ci-dessus vous indique que les colonnes 2 et 3 de la première ligne et les colonnes 1 et 2 de la deuxième ligne ont la même valeur voici mon code

            <div class="row">
                <div class="col-xs-12">
                    <div class="rst-mediagrid">
                                                <?php 

                                                    global $post;

                                                    $loop = new WP_Query( array( 'posts_per_page' => 9,'orderby'=>rand) );

                                                    $posts = array();

                                                     while ( $loop->have_posts() ) : 

                                                        $items = array();

                                                        $items['link']=wp_get_attachment_url( get_post_thumbnail_id( $post->ID ));
                                                        $items['Image'] = get_the_post_thumbnail($loop->the_post());
                                                        $items['LinkPost']=get_permalink($post->ID);
                                                        $items['Title']=get_the_title($post->ID);
                                                        $items['PostTime']=get_the_time('M d,Y', $post->ID);


                                                        array_push($posts, $items);


                                                     endwhile;

                                                    for($i = 1; $i< count($posts); $i++){


                                                ?>
                                                    <?php
                                                    if($i==1){
                                                    ?>
                        <div class="div">
                            <div class="rst-col rst-col-50">
                                <div class="rst-postpic">
                                                                        <a href="<?php echo $posts[$i]['LinkPost']; ?>"><img src="<?php echo $posts[$i+1]['link']; ?>" alt="" style="height: 385px;width: 770px"/></a>
                                                                        <?php echo $i+1; ?>
                                </div>
                                <div class="rst-postinfo">
                                    <a href="#"><span>Sport</span></a>
                                    <h6><a href="<?php echo $posts[$i]['LinkPost']; ?>"><?php echo $posts[$i]['Title']; ?></a></h6>
                                    <time><i class="fa fa-clock-o"></i><?php echo $posts[$i]['PostTime']; ?></time>
                                </div>
                            </div>
                                                        <?php //endif; ?>

                            <div class="rst-col rst-col-25">
                                <div class="rst-postpic rst-postvideo">

                                    <a href="<?php echo $posts[$i+1]['LinkPost']; ?>"><img src="<?php echo $posts[$i+2]['link']; ?>" alt="" style="height: 385px;width: 770px"/></a>
                                                                            <?php echo $i+2; ?>
                                </div>
                                <div class="rst-postinfo">
                                    <a href="#"><span>Sport</span></a>
                                    <h6><a href="<?php echo $posts[$i+1]['LinkPost']; ?>"><?php echo $posts[$i+1]['Title']; ?></a></h6>
                                    <time><i class="fa fa-clock-o"></i><?php echo $posts[$i+1]['PostTime']; ?></time>
                                </div>
                            </div>

                            <div class="rst-col rst-col-25">
                                <div class="rst-postpic">
                                    <a href="<?php echo $posts[$i+2]['LinkPost']; ?>"><img src="<?php echo $posts[$i+3]['link']; ?>" alt="" style="height: 385px;width: 770px"/></a>
                                                                            <?php echo $i+3; ?>
                                </div>
                                <div class="rst-postinfo">
                                    <a href="#"><span>Sport</span></a>
                                    <h6><a href="<?php echo $posts[$i+2]['LinkPost']; ?>"><?php echo $posts[$i+2]['Title']; ?></a></h6>
                                    <time><i class="fa fa-clock-o"></i><?php echo $posts[$i+2]['PostTime']; ?></time>
                                </div>
                            </div>

                            <div class="clear"></div>
                        </div><!-- end first row-->
                                                    <?php } //end if ?>
                                                <?php
                                                if($i == 2 ){
                                                ?>
                        <div class="div">
                            <div class="rst-col rst-col-25">
                                <div class="rst-postpic">
                                    <a href="<?php echo $posts[$i]['LinkPost']; ?>"><img src="<?php echo $posts[$i+1]['link']; ?>" alt="" style="height: 385px;width: 770px"/></a>
                                                                            <?php echo $i+1; ?>
                                </div>
                                <div class="rst-postinfo">
                                    <a href="#"><span>Sport</span></a>
                                    <h6><a href="<?php echo $posts[$i]['LinkPost']; ?>"><?php echo $posts[$i]['Title']; ?></a></h6>
                                    <time><i class="fa fa-clock-o"></i><?php echo $posts[$i]['PostTime']; ?></time>
                                </div>
                            </div>
                            <div class="rst-col rst-col-25">
                                <div class="rst-postpic rst-postvideo">
                                    <a href="<?php echo $posts[$i+1]['LinkPost']; ?>"><img src="<?php echo $posts[$i+2]['link']; ?>" alt="" style="height: 385px;width: 770px"/></a>
                                                                            <?php echo $i+2; ?>
                                </div>
                                <div class="rst-postinfo">
                                    <a href="#"><span>Sport</span></a>
                                    <h6><a href="<?php echo $posts[$i+1]['LinkPost']; ?>"><?php echo $posts[$i+1]['Title']; ?></a></h6>
                                    <time><i class="fa fa-clock-o"></i><?php echo $posts[$i+1]['PostTime']; ?></time>
                                </div>
                            </div>
                            <div class="rst-col rst-col-50">
                                <div class="rst-postpic">
                                    <a href="<?php echo $posts[$i+2]['LinkPost']; ?>"><img src="<?php echo $posts[$i+3]['link']; ?>" alt="" style="height: 385px;width: 770px"/></a>
                                                                            <?php echo $i+3; ?>

                                </div>
                                <div class="rst-postinfo">
                                    <a href="#"><span>Sport</span></a>
                                    <h6><a href="<?php echo $posts[$i+2]['LinkPost']; ?>"><?php echo $posts[$i+2]['Title']; ?></a></h6>
                                    <time><i class="fa fa-clock-o"></i><?php echo $posts[$i+2]['PostTime']; ?></time>
                                </div>
                            </div>
                            <div class="clear"></div>
                        </div><!--end second row-->
                                                     <?php
                                                }//end if

                                                }//end for loop ?>

                    </div>
                </div>
            </div>

le problème auquel je faisais face est que je télécharge 6 messages et quand j’augmente la valeur de la boucle comme for($i=1;$ientrez la description de l'image ici

cette boucle me donne une valeur unique mais les deux dernières colonnes n’ont pas d’images mais quand je télécharge deux autres messages dans wordpress et le nombre total de messages = 8 dans la base de données, l’image apparaît, dites-moi quel est le problème dans ma boucle

Solution n°1 trouvée

La logique du code à l’intérieur de la boucle est vraiment déroutante, voici ce qui se passe :

  1. Première itération ( $i = 1)
    • Afficher la seconde image ( $posts[$i+1]['link']) avec le lien du premier post ( $posts[$i]['LinkPost'];)
    • Afficher la troisième image ( $posts[$i+2]['link']) avec le lien du deuxième post ( $posts[$i+1]['LinkPost'])
    • Afficher la quatrième image ( $posts[$i+3]['link']) avec le lien du troisième post ( $posts[$i+2]['LinkPost'])
  2. Deuxième itération ( $i = 2)
    • Afficher la troisième image ( $posts[$i+1]['link']) avec le lien du deuxième post ( $posts[$i]['LinkPost'];)
    • Afficher la quatrième image ( $posts[$i+2]['link']) avec le lien du troisième post ( $posts[$i+1]['LinkPost'])
    • Afficher la cinquième image ( $posts[$i+3]['link']) avec le lien du quatrième post ( $posts[$i+2]['LinkPost'])
  3. Toutes les itérations suivantes : ne rien faire

C’est pourquoi vous obtenez deux fois l’image 3 et 4.

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 *