2014-03-04 40 views
0

我有一個自定義帖子類型「組合」和不同的WP_Query爲不同的自定義帖子頁面和目的。不同的posts_per_page不同的WP_Query中的自定義帖子類型的數量

對於投資組合頁面我想選擇投資組合類型的12個posts_per_page。

對於主頁我想選擇投資組合類型的8 posts_per_page。

對於塊單個工作頁面上的類似工作我想選擇投資組合類型的4個posts_per_page。

目前在所有wp_query中我都有一個var $ posts_per_page這個數字。但它不起作用,因爲我在functions.php中添加了一個函數,用於定義每頁默認的自定義投資組合帖子值。現在是8,所以現在我在所有查詢中每頁有8篇文章。我添加這個功能的原因是讓分頁工作。該函數:

function portfolio_posts_per_page($query) { 
    if ($query->query_vars['post_type'] == 'portfolio') $query->query_vars['posts_per_page'] = 8; 
    return $query; 
} 
if (!is_admin()) add_filter('pre_get_posts', 'portfolio_posts_per_page'); 

我應該刪除這個功能,改變每頁變種博客文章中的WordPress的管理控制檯,以1?就像之前一樣。還是有另一個解決這個問題的方法?

UPDATE

我試圖改變功能到這一點,但隨後的WordPress並不在所有的工作:

function portfolio_posts_per_page($query) { 

if ($query->query_vars['post_type'] == 'portfolio') { 

     if (is_post_type_archive('portfolio') 
      $query->query_vars['posts_per_page'] = 12; 
     } 
     elseif (is_front_page()) { 
      $query->query_vars['posts_per_page'] = 8; 
     } 
     elseif (is_singular('portfolio')) { 
      $query->query_vars['posts_per_page'] = 4; 
     } 
     else { 
      $query->query_vars['posts_per_page'] = 4; 
     } 
}  
return $query; 
} 
+0

你正在使用什麼模板頁面? –

+0

首先是靜態前頁面模板(自定義模板文件 - custom-main.php),第二是archive-portfolio.php - 自定義文章類型歸檔,第三是single-portfolio.php - 用於自定義文章類型組合的單頁面模板。 – Ksenia

+0

看來你對每個自定義帖子類型都有單獨的模板,對吧? –

回答

0

對於每個自定義文章類型中,模板文件使用自定義查詢;例如,如果有一個名爲archive-portfolio一個自定義模板,然後使用像這樣在該文件中:

$args = array('post_type' => 'portfolio', 'posts_per_page' => 8); 
$loop = new WP_Query($args); 
while ($loop->have_posts()) : $loop->the_post(); 
    the_title(); 
    echo '<div class="entry-content">'; 
     the_content(); 
    echo '</div>'; 
endwhile; 

這只是一個例子,同樣的方式,你可以使用不同的模板文件進行其他自定義職位類型和完全使用不同的論點。對於主頁上的主要查詢,您可以設置爲WordPressbackend。閱讀更多關於Codex

更新:檢查this answer of minepre_get_posts

相關問題