comment gérer la boucle en remplissant la structure de grille bootstrap dans wordpress?
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
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;$i
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 :
- 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']
)
- Afficher la seconde image (
- 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']
)
- Afficher la troisième image (
- Toutes les itérations suivantes : ne rien faire
C’est pourquoi vous obtenez deux fois l’image 3 et 4.
0 commentaire