2012-12-20 189 views
0

我正在構建一個Wordpress網站,我正在努力弄清楚如何修改taxonomy.php以顯示自定義類別和自定義分類中的所有帖子,但我被卡住了。這裏的情況:如何修改Taxonomy.php以顯示自定義帖子類型和自定義分類標準的所有帖子?

我有一個自定義職位類型稱爲'工作。'在該自定義帖子類型中,我有一個名爲「項目類型」的自定義分類,我創建了幾個類別,分別稱爲攝影,視頻,印刷設計等。我設置了一個名爲taxonomy.php的模板,該模板管理mydomain.com/work以及mydomain .COM /項目類型/打印設計/。問題是這些頁面只顯示5個最近的帖子。我需要他們將所有帖子顯示在適當的類別中(或者在mydomain.com/work的情況下,不管類別如何,所有帖子都是自定義帖子類型)。

我發現this page about query_posts這幫助我意識到我需要添加<?php query_posts(array ('post_type' => 'work', 'posts_per_page' => -1)); ?>。現在工作頁面加載正確,但所有類別頁面都加載了所有工作帖子(因爲我已經將post_type定義爲我添加的片段中的工作)。

我該如何概括代碼,使其使工作頁面顯示所有工作帖子,而類別頁面僅顯示相關類別的帖子?下面是完整的代碼:

<?php 

/** 
* Project Type Taxonomy Archive 
*/ 

$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); 
?> 

<h3 style="color:#EEEEEE"><?php echo apply_filters('the_title', $term->name); ?> PROJECTS</h3> 

<ul class="thumbnails"> 
    <div id="work"> 

    <?php if (!empty($term->description)): ?> 
     <div class="archive-description"> 
     <?php echo esc_html($term->description); ?> 
     </div> 
    <?php endif; ?> 
    <?php query_posts(array ('post_type' => 'work', 'posts_per_page' => -1)); ?> 
    <?php if (have_posts()): while (have_posts()): the_post(); ?> 

    <div class="post"> 
     <li class="span4"> 
      <div class="thumbnail"> 
      <a href="<?php the_permalink() ?>"><div class="tint"><?php the_post_thumbnail('featured-thumb'); ?></div></a> 
      <br /> 
      <div class="thumbcaption"> 
       <a href="<?php the_permalink() ?>"><h3><?php the_title() ?></h3></a> 
       <p> <?php the_excerpt(); ?></p> 
       <p><i><?php the_terms($post->ID, 'work_project_type' , ' '); ?></i></p> 
      </div> 
      </div> 
     </li> 
    </div> 

    <?php endwhile; ?> 

    <div class="navigation clearfix"> 
     <div class="alignleft"><?php next_posts_link('« Previous Entries') ?></div> 
     <div class="alignright"><?php previous_posts_link('Next Entries »') ?></div> 
    </div> 

    <?php else: ?> 

    <h2 class="post-title">No Projects in <?php echo apply_filters('the_title', $term->name); ?></h2> 
    <div class="content clearfix"> 
     <div class="entry"> 
      <p>It seems there aren't any projects in <strong><?php echo apply_filters('the_title', $term->name); ?></strong> right now. Check back later, I try to add new projects regularly.</p> 
     </div> 
    </div> 

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

+0

任何人有任何想法?有人告訴我看看WP_Query,但我無法弄清楚如何將它用於我需要做的事情...... – mcography

回答

1

一個處理這種方法是不能添加自定義模板。

當您轉到與分類法歸檔wordpress相關的網址時,已將所有帖子從數據庫中取出。通過創建單獨的模板,儘管您可以更輕鬆地控制像'posts_per_page'這樣的查詢參數,但不必進行自己的查詢就可以更好。

請考慮做一個pre_get_posts過濾器。像這樣的東西。

// if on a certain taxonomy archive page, do not limit the posts 
add_action('pre_get_posts', function($query){ 
    if (isset($query->query_vars['name_of_your_taxonomy'])) { 
     add_filter('post_limits', function($limit){ 
      /* 
      default will be something like this 'LIMIT 0, 10' 
      but we don't want a limit so return empty string 
      */ 
      return ''; 
     }); 
    } 
}); 
相關問題