2015-04-12 88 views
1

我對wordpress編碼頗爲陌生,雖然不是PHP。但我不太明白這裏發生了什麼。代碼是:wp_Query複製帖子

<div class="ul-box floatRight"> 
      <ul> 
      <?php 
wp_reset_query(); 
$index_query = new WP_Query(array('post_type' => 'explore_more', 'posts_per_page' => 3,'order'=>'DES')); 
?> 
    <?php 
    while ($index_query->have_posts()) : $index_query->the_post(); ?> 
      <li class='spotlight-li'> 
       <?php the_post_thumbnail(); ?> 
        <div class="explore-more-content floatLeft"> 
        <h4><?php 
       $title=get_the_title(); 
       echo showBrief($title,8); 
?></h4> 
       </div> 
      </li> 
      <?php 
    endwhile; 
     wp_reset_query(); ?> 
      </ul> 
     </div> 

由於我無法理解的原因,它會產生重複的帖子。我多次搜索了它,並且據我所知,在某處有一個雙循環,但我不知道在哪裏。我只能看到while循環,除非get_the_title()函數或showBrief()函數中有更多循環。

任何人都可以幫忙嗎?

回答

2

您的代碼看起來不錯,應該按預期工作,但是,showBrief()不是原生的Wordpress功能。這對於你的主題非常具體,所以你需要在你的主題代碼中進行挖掘並檢查該功能的確切功能。不知道這個功能到底是什麼,我不能告訴你這是否是你的問題。

我可是對你的代碼的一些注意事項:

  • 'order'=>'DES'應該'order'=>'DESC'

  • 你不需要wp_reset_query();查詢之前。主查詢已自行重置,並且所有自定義查詢都應重置

  • wp_reset_query();在您的自定義查詢出錯後,應該是wp_reset_postdata();wp_reset_query();使用與query_posts你應該永遠使用

  • 而不是使用:endwhile的,而用花括號({})。是的,您的語法是100%正確的,但由於代碼編輯器不支持該語法,因此很難進行調試。所有的代碼編輯器支持curlies,這使得調試很容易

+0

是的,我認爲'DES是奇怪的,但它被用在別的地方,所以我去了!是的,我寧願使用'{}',但那是我找到的代碼。感謝您的幫助。但即使'ShowBrief()'被刪除,我仍然得到重複:S – Chud37

+0

問題不在於此代碼。還有其他一些事情正在引發這個問題,並且可以是我所說的任何事情。你在哪裏使用這段代碼,它應該做什麼。您應該使用此信息更新您的帖子,並且還要更新模板的完整代碼 –