2014-06-17 51 views
0

我試圖讓我的主頁(home.php)顯示一些自定義帖子類型的帖子縮略圖,並通過它們進行分頁。在主頁上的Wordpress分頁休息

適用於第一頁,但是當我嘗試到達第二頁時,它不起作用。

,如果我下面的代碼添加到我的functions.php

function homepage_custom($query) 
{ 
    if ($query->is_home() && $query->is_main_query()) 
    { 
     $query->set('post_type', array('custom')); 
    } 
} 
add_action('pre_get_posts', 'homepage_custom'); 

我沒有得到任何職位。

再次試圖未經檢查爲主查詢

function homepage_custom($query) 
{ 
    if ($query->is_home()) 
    { 
     $query->set('post_type', array('custom')); 
    } 
} 
add_action('pre_get_posts', 'homepage_custom'); 

我得到的第一個帖子(我16顯示每一頁上)。當我轉到第二頁時,URL顯示「localhost/page/2」,但我看到相同的16個帖子。將永久鏈接重置爲默認值可以獲得相同的結果。

如果我嘗試這個直接從home.php查詢:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
query_posts(array("post_type" => "custom", "paged" => $paged)); 

我看到的第一個16,我得到404第2頁上。同樣,重置固定鏈接也會得到相同的結果。

  • 我有17個職位與此自定義類型。
  • 顯示16每頁我得到2頁看到相同的職位,並顯示5每頁我看到4頁看到相同的職位。

    echo get_query_var('paged'); 
    

此輸出0每次。

回答

0

猜我發現了它。

在同一頁我必須展示兩種不同的自定義帖子類型。一個帖子類型在主區域中被丟失,每頁16個。另一個用於填充邊欄中的列表。

使用這段代碼更改主查詢

function homepage_custom($query) 
{ 
    if ($query->is_home() && $query->is_main_query()) 
    { 
     $query->set('post_type', array('custom')); 
    } 
} 
add_action('pre_get_posts', 'homepage_custom'); 

但是當我使用的home.php

get_side_bar(); 

主查詢以某種方式忽略以下,這就是爲什麼我得到沒有與主查詢的檢查。沒有主要的查詢檢查,我總是在搜索我的自定義帖子類型,並且它適用於前16個帖子,然後來自側欄的查詢以某種方式打破它,它以某種方式丟失了關於要顯示的帖子和我結束的參考不管頁面如何,都一樣。

使用wp_reset_query()方法,從sidebar.php中刪除此查詢或使用WP_query實例(其中循環遍歷本地變量)解決了此問題。

0

嘗試使用此代碼:

$pager_id = get_query_var('paged'); 
$postsPerPage = 5; 

if($pager_id != 0) { 
    $search_args = array('post_type' => 'custom', 'post_status' => 'publish', 'posts_per_page' => $postsPerPage, 'paged' => $pager_id); 
} else { 
    $search_args = array('post_type' => 'custom', 'post_status' => 'publish', 'posts_per_page' => $postsPerPage); 
} 

$results = new WP_Query($search_args); 
+0

隨着你的代碼分頁箭頭不再顯示。如果我嘗試通過url('localhost/page/2')訪問第2頁,仍然會給我一個404。將變量$ results的名稱更改爲$ wp_query修復了此問題,但分頁不起作用 –

+0

如果使用簡單的分頁插件:http://wordpress.org/plugins/tw-pagination/ 然後,您可以把這段代碼放在循環之後: 'if(function_exists('tw_pagination'))tw_pagination($ results,'range = 4&anchor = 2&nextpage = Next&previouspage = Previous');' –

+0

確實解決了分頁箭頭的問題,看不到第2頁 –