為 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">&raquo;</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]

實際範例可參考本部落格首頁。


參考資料:WordPress Function Reference/paginate links

分享這篇文章:

迴響

目前還沒有迴響。

留下你的迴響

*

*