2010-12-05 21 views
0

Je dois implémenter un curseur qui montrera 4 post-vignettes d'une catégorie particulière dans chaque diapositive. Pour cela, j'écrit ceci:Récupération d'un message wordpress avec une boucle

<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 que j'ai besoin pour le curseur jquery est quelque chose comme 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! 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 utilisé la fonction dans un mauvais sens: 'query_posts('cat=14&posts_per_page=4&offset='.$pStart)'? Comment dois-je réellement l'implémenter?

Répondre

0

Si vous avez beaucoup de messages, cette boucle externe while va continuer jusqu'à ce qu'elle soit interrogée tous les messages, 2 à la fois!

Il me semble que vous compliquez les choses pour vous-même, 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; 
+0

Excellent! Cela fonctionne très bien! Je n'ai pas pensé de cette façon :) note: dans ma première approche j'ai essayé avec 6 messages, donc je ne comprends pas pourquoi ça prenait autant de temps et geler le navigateur! – med