2010-12-05 5 views
0

각 슬라이드의 특정 카테고리에서 4 개의 미리보기 이미지를 표시하는 슬라이더를 구현해야합니다.루프를 사용하여 wordpress 게시물을 가져 오는 중

<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(); 

          } ?> 

나는 JQuery와 슬라이더에 필요한 구조는이 같은 것입니다 :

   <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> 

을하지만 코드가 어떤 이유로 작동하지 않습니다이를 위해 내가 쓴! 몇 가지 목록을 생성 한 후 코드 실행이 멈추지 않고 브라우저가 멈춘 것처럼 보입니다. 함수를 잘못된 방법으로 사용 했습니까? 'query_posts('cat=14&posts_per_page=4&offset='.$pStart)'? 실제로 어떻게 구현해야합니까?

답변

0

많은 게시물이 있다면, 그 바깥 쪽 while 루프는 한 번에 2 개씩 모든 게시물을 질의 할 때까지 계속 진행할 것입니다!

당신이 스스로를 복잡하게 만드는 것처럼 보이므로 여기 대신 내가 할 일이 있습니다.

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

우수! 그것은 잘 작동합니다! 나는이 방법으로 생각하지 않았다 :) 노트 : 나의 첫 번째 접근에서 나는 6 개의 포스트로 시도했다. 그래서 나는 왜 그것이 오랫동안 브라우저를 동결시키고 있었는지 알지 못한다! – med

관련 문제