2013-12-17 39 views
2

我已經創建了自定義分類的術語分頁列表,但分頁顯示不正確。無論我設置每頁有多少帖子,只輸出兩頁。Wordpress分頁顯示錯誤頁數的術語列表?

因此,有6個帖子,每頁設置爲6,我看到兩頁,第二頁空白。有6篇文章和2頁每頁我看到兩頁,並沒有第三頁(我已經嘗試在網址欄中輸入/ page/3 /並找不到頁面,所以這不僅僅是分頁按鈕的問題但似乎是Wordpress輸出的頁面數量有問題)。

任何人都可以看到爲什麼這可能是?我怎樣才能讓分頁正確工作?

我爲這個問題添加了一個賞金,如果任何人都可以建議讓這個分頁正確工作的方法。


更新19/12:

我的方式來解決這個部分。我發現部分問題似乎部分與WP中的Reading設置有關。我將閱讀設置設置爲每頁6個,這就是爲什麼不管我在模板文件中設置了$posts_per_page,我只輸出了2頁。

現在我可以得到Wordpress輸出所有的頁面和分頁鏈接,如果我確保閱讀設置與模板文件中設置的數字匹配,但我總是從for循環獲得額外的輸出,導致一個空DIV。這在某些情況下會導致額外的頁面,具體取決於最後一頁上的帖子數量。我在最後一頁也沒有分頁鏈接。從歸檔prints.php


代碼摘錄:

$posts_per_page = 6; 

$page = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$offset = ($page - 1); 

$categories = get_terms('prints_cat'); 

for($i = $offset * $posts_per_page; $i < ($offset + 1) * $posts_per_page; $i++) { 
    $category = $categories[$i]; 
    echo '<div class="cat-preview"><a href="'; 
    echo get_term_link($category->slug, 'prints_cat'); 
    echo '"><h2>'; 
    echo $category->name; 
    echo '</h2></a></div>'; 
} 
unset($category); 

custom_page_navi(); 

而且我custom_page_navi()函數的代碼,從我的functions.php文件:

function custom_page_navi() { 
global $wp_query; 
$bignum = 999999999; 
if ($wp_query->max_num_pages <= 1) 
return; 

echo '<nav class="pagination">'; 

    echo paginate_links(array(
     'base'   => str_replace($bignum, '%#%', esc_url(get_pagenum_link($bignum))), 
     'format'  => '', 
     'current'  => max(1, get_query_var('paged')), 
     'total'   => $wp_query->max_num_pages, 
     'prev_text'  => 'Prev', 
     'next_text'  => 'Next', 
     'type'   => 'list', 
     'show_all'  => false, 
     'end_size'  => 2, 
     'mid_size'  => 0 
    )); 

echo '</nav>'; 

}

+0

你在哪裏添加你的代碼,並添加自定義頁面模板?或者你添加了一個'taxonomy- {taxonomy} .php'文件嗎? – birgire

+0

我已經編輯了上面的問題來澄清。我爲自定義帖子類型使用歸檔模板 - 「archive- {taxonomy} .php」。 – jasonbradberry

回答

3

您可以創建一個自定義的頁面模板文件tpl_list.php用下面的代碼:

<?php 
/** 
* Template Name: Paginated list of terms for a custom taxonomy 
* 
*/ 

// Edit: 
$taxonomy = 'prints_cat'; 
$number = 3; // number of terms to display per page 

// Setup: 
$page   = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$offset  = ($page > 0) ? $number * ($page - 1) : 1; 
$totalterms = wp_count_terms($taxonomy, array('hide_empty' => TRUE)); 
$totalpages = ceil($totalterms/$number); 

// Debug: 
// printf('taxonomy: %s - number: %s - page: %s - offset: %s - totalterms %s - totalpages: %s' , $taxonomy, $number, $page, $offset, $totalterms, $totalpages); 

// Here I list all the available paramters to get_terms(): 
$args = array(
    'orderby'  => 'name', 
    'order'   => 'ASC', 
    'hide_empty' => true, 
    'exclude'  => array(), 
    'exclude_tree' => array(), 
    'include'  => array(), 
    'number'  => $number, 
    'fields'  => 'all', 
    'slug'   => '', 
    'parent'   => '', 
    'hierarchical' => true, 
    'child_of'  => 0, 
    'get'   => '', 
    'name__like' => '', 
    'pad_counts' => false, 
    'offset'  => $offset, 
    'search'  => '', 
    'cache_domain' => 'core' 
); 

$terms = get_terms($taxonomy, $args); 

foreach ($terms as $term) 
{ 
    printf('<div class="cat-preview"><h2><a href="%s">%s</a></h2></div>', 
      get_term_link($term->slug, 'country'), 
      $term->name, 
      $term->name 
     ); 
} 

// Show custom page navigation 
printf('<nav class="pagination">%s</nav>', 
      custom_page_navi($totalpages, $page, 3, 0) 
     ); 

其中

function custom_page_navi($totalpages, $page, $end_size, $mid_size) 
{ 
    $bignum = 999999999; 

    if ($totalpages <= 1 || $page > $totalpages) return; 

    return paginate_links(array(
     'base'   => str_replace($bignum, '%#%', esc_url(get_pagenum_link($bignum))), 
     'format'  => '', 
     'current'  => max(1, $page), 
     'total'   => $totalpages, 
     'prev_text'  => 'Prev', 
     'next_text'  => 'Next', 
     'type'   => 'list', 
     'show_all'  => false, 
     'end_size'  => $end_size, 
     'mid_size'  => $mid_size 
    )); 
} 

創建一個頁面(例如,稱爲prints)並選擇上述頁面模板。

然後你就可以訪問:

example.com/prints/ 
    example.com/prints/page/2/ 
    example.com/prints/page/3/ 

如果你註釋掉調試線,您將獲得例如:

taxonomy: prints_cat - 
number: 3 - 
page: 2 - 
offset: 3 - 
totalterms 6 - 
totalpages: 2 
+0

謝謝 - 這很好。 – jasonbradberry

+0

真的很棒的代碼。 – aidadev

0

您的價格

'end_size' => 2, 'mid_size' => 0

是從抄本中提到的默認值不同,你可以嘗試其更改爲

'end_size' => 1, 'mid_size' => 2

+0

我已經嘗試過這些設置的各種值,包括默認值,它似乎沒有影響到這個問題。 (還是)感謝你的建議。請參閱上面編輯的問題以獲取更新。 – jasonbradberry