paginate_links()

paginate_links()
目次

paginate_links()の用途

paginate_links() は、現在のクエリに基づいてページナビゲーションのリンクを生成するテンプレートタグです。アーカイブページやカスタムクエリの結果など、複数ページにまたがる投稿リストに使用されます。

paginate_links()の使用方法

paginate_links( array $args );

パラメータ

パラメータ名説明
baseページ番号リンクの基本URL形式。%#% をページ番号に置き換えます。通常は get_pagenum_link()str_replace() を使って構築します。
formatページ番号のURLに使う形式。例:'?paged=%#%''/page/%#%'
total総ページ数。通常は $wp_query->max_num_pages を指定します。
current現在のページ番号。max(1, get_query_var('paged')) を使用するのが一般的です。
show_allすべてのページ番号を表示するか。true にすると全ページを表示します。デフォルトは false
end_size最初と最後に表示するページ番号の数。デフォルトは 1
mid_size現在ページの前後に表示するページ番号の数。デフォルトは 2
prev_next「前へ」「次へ」のリンクを表示するか。デフォルトは true
prev_text「前へ」リンクのテキスト。例:« 前へ
next_text「次へ」リンクのテキスト。例:次へ »
type出力形式。'plain'(文字列)、'array'(配列)、'list'<ul>タグ付き)から選択可能。デフォルトは 'plain'
add_argsクエリ引数を追加したい場合に使用。配列形式で指定。
add_fragment各リンクの末尾に追加する文字列(例:#section1)。
before_page_numberページ番号の前に追加するテキスト。
after_page_numberページ番号の後に追加するテキスト。

戻り値

  • 指定した形式のページナビゲーションHTML(または配列)を返します。
  • 表示させるには echo が必要です。

paginate_links()の使用例

<?php
global $wp_query;

echo paginate_links( array(
  'base'      => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
  'format'    => '?paged=%#%',
  'current'   => max( 1, get_query_var( 'paged' ) ),
  'total'     => $wp_query->max_num_pages,
  'mid_size'  => 2,
  'prev_text' => '« 前へ',
  'next_text' => '次へ »',
) );
?>

paginate_links()の注意点

  • paginate_links() はページ番号のみを出力します。前後の <nav> やラップ用の <div class="pagination"> などはテーマに応じて別途用意してください。
  • カスタムクエリ(WP_Query を使用)で使う場合は $custom_query->max_num_pages を指定してください。
  • type'array' にすると、各リンクを配列として取得できるので、カスタムHTML構造で出力したいときに便利です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次