為 WordPress 加入文章分頁導覽
要在 WordPress 加上帶有頁碼的分頁導覽,一般會用 WP-Paginate 等外掛。但如果要在佈景主題內直接插入分頁導覽的話,可使用 WordPress 內建的 paginate_links 函式。
在佈景主題的 functions.php 內:
function my_pagination() {
global $wp_query, $wp_rewrite;
$pagination = array(
'base' => @add_query_arg( 'paged', '%#%' ),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $wp_query->query_vars['paged'] > 1 ? $wp_query->query_vars['paged'] : 1,
'show_all' => false,
'type' => 'plain',
'prev_text' => '«',
'next_text' => '»',
'end_size' => 2
);
if ( $wp_rewrite->using_permalinks() ) {
$pagination['base'] = untrailingslashit( trailingslashit ( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%', 'paged' );
}
if ( ! empty( $wp_query->query_vars['s'] ) ) {
$pagination['add_args'] = array( 's' => get_query_var( 's' ) );
}
echo paginate_links( $pagination );
}
接著在要插入分頁導覽的地方呼叫 my_pagination(); 就會輸出分頁導覽的 HTML 了。
以上的函式會輸出成類似以下的 HTML:
<span class='page-numbers current'>1</span>
<a class='page-numbers' href='/page/2'>2</a>
<a class="next page-numbers" href="/page/2">»</a>
帶有 Class 名稱可以用來自訂樣式。
其中 $pagination 內可自訂的地方:
- show_all
- Boolean值,是否要顯示出所有的分頁。如果設為 false,中間的分頁會被省略為「…」符號。
true → [1][2][3] … [5][>]
false → [1][2][3][4][5][>] - type
- 輸出的 HTML 類型。有 plain(單純的超連結)、array(PHP陣列)和 list(<ul> 列表)三種模式。
- prev_text 和 next_text
- 「上一頁」,「下一頁」的文字。
- end_size
- 要顯示最前面和最後面幾頁的連結(當 show_all 是 false 的時候)
end_size = 2 → [1][2] … [14][15]
end_size = 3 → [1][2][3] … [13][14][15] - mid_size
- 要顯示目前分頁前後幾頁的連結(當 show_all 是 false 的時候)
mid_size = 1 → [1][2] … [12][13][14] … [19][20]
mid_size = 2 → [1][2] … [11][12][13][14][15] … [19][20]
實際範例可參考本部落格首頁。
迴響
目前還沒有迴響。
留下你的迴響