2013-03-21 33 views
0

我試圖按月歸檔分類中的帖子,但不知道如何實現。月度檔案中的分類按類別分組

有人可以幫助我。

問候


這是我正在使用archive.php PHP代碼

<?php 
     $terms = get_terms("publicationcat"); 
     $count = count($terms); 
     if ($count > 0){ 
      foreach ($terms as $term) { 
       echo "<div class=\"publication-area\">"; 
       echo '<h3 class="term-heading">' . $term->name . '</h3>'; 
       echo "<div class=\"publication-txt\">"; 
       echo "<ul>"; 
       while (have_posts()) : the_post(); 
       echo "<li><a target=\"_blank\" href=\"" . wp_get_attachment_url(get_post_meta($post->ID, 'document_file_id', true)) . "\">".$post->post_title."</a></li>"; 
       endwhile; 
       echo "</ul>"; 
       echo "</div>"; 
       echo "</div>"; 
      } 
     } 
     ?> 

唯一的問題是,它顯示相同的文章標題爲所有條款..

+0

嘿Himanshu,你現在用什麼函數輸出存檔? – BarryWalsh 2013-03-21 11:25:56

+0

嗨巴里, 我剛剛編輯的問題,並粘貼的PHP代碼.. – 2013-03-21 11:39:45

回答

0

當您在每個類別中循環查看帖子時,您並未找到與該類別相關的帖子,而是循環遍歷每個帖子。下面(未經測試,如果發生錯誤,請發表評論)應對您的問題進行排序。

但請注意,如果帖子被分配到多個類別,您可能仍會得到一些重複。

檢查每個帖子,以確保它在所需的類別。好點 - 只有一個查詢。壞點 - 循環通過每隻貓的所有職位。

<?php 
$terms = get_terms('publicationcat'); 

if(!empty($terms)) : foreach($terms as $term) : 
?> 
     <div class="publication-area"> 

      <?php sprintf('<h3 class="term-heading">%1$s</h3>', $term->name); ?> 
      <div class="publication-txt"> 

       <?php if($my_query->have_posts()) : ?> 

        <ul> 

        <?php if(in_category($term->slug)) : ?> 

        <?php while($my_query->have_posts()) : $my_query->the_post(); ?> 

          <?php $link = wp_get_attachment_url(get_post_meta($post->ID, 'document_file_id', true)); ?> 
          <li><a target="_blank" href="<?php echo ($link !== '') ? $link : ''; ?>"> 
           <?php the_title(); ?> 
          </a></li> 

         <?php endwhile; ?> 

        <?php endif; ?> 

        </ul> 

       <?php endif; ?> 

      </div> 

     </div> 
<?php 
    endforeach; 
endif; 
?> 

重新查詢帖子並輸出所有抓取的帖子。好點 - 只拉取類別所需的帖子。不好的一點 - 很多查詢,所以很多查詢可能會減慢你的網站。

<?php 
$terms = get_terms('publicationcat'); 

if(!empty($terms)) : foreach($terms as $term) : 
?> 
     <div class="publication-area"> 

      <?php sprintf('<h3 class="term-heading">%1$s</h3>', $term->name); ?> 
      <div class="publication-txt"> 

       <?php 
       $args = array(
        'cat' => $term->term_id 
       ); 
       $my_query = new WP_Query($args); 
       ?> 
       <ul> 
        <?php if($my_query->have_posts()) : while($my_query->have_posts()) : $my_query->the_post(); ?> 

          <?php $link = wp_get_attachment_url(get_post_meta($post->ID, 'document_file_id', true)); ?> 
          <li><a target="_blank" href="<?php echo ($link !== '') ? $link : ''; ?>"> 
           <?php the_title(); ?> 
          </a></li> 

         <?php endwhile; ?> 
        <?php endif; ?> 
        <?php wp_reset_query(); ?> 

       </ul> 

      </div> 

     </div> 
<?php 
    endforeach; 
endif; 
?> 
+0

你好大衛, 我剛剛試過你的代碼,但它不工作,並沒有顯示任何東西。 另外我使用的代碼來顯示日期歸檔,所以它會適合運行自定義查詢? – 2013-03-21 12:15:06

+0

立即嘗試。更正了一個錯字並測試了這一點,在我的網站上正常工作。此代碼也適用於您的歸檔,您只需根據日期範圍的要求修改查詢即可。 – 2013-03-21 12:32:42

+0

好的,所以我添加了另一種方法,可能更適合存檔頁面(兩個示例中的第一個)。總之,這可能效率較低,但在處理日期時,它更容易,更快速,因爲您不必手動構建查詢。 – 2013-03-21 12:41:24