投稿リストをナビゲートするためのページネーションの使用

WordPressサイトでのページネーションの最も一般的な使用法は、長い投稿リストを別々のページに分割することです。カテゴリ、アーカイブ、またはブログやサイトのデフォルトインデックスページを表示している場合、WordPressはデフォルトで1ページあたり10件の投稿のみを表示します。ユーザーは、**管理

設定
読み込み**の画面で、各ページに表示される投稿の数を変更できます。

ページネーションを伴うループ

この簡略化された例は、メインループにページネーション機能を追加できる場所を示しています。ループの前または後に関数を追加します。

  1. <?php if ( have_posts() ) : ?>
  2. <!-- Start the pagination functions before the loop. -->
  3. <div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
  4. <div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
  5. <!-- End the pagination functions before the loop. -->
  6. <!-- Start of the main loop. -->
  7. <?php while ( have_posts() ) : the_post(); ?>
  8. <!-- the rest of your theme's main loop -->
  9. <?php endwhile; ?>
  10. <!-- End of the main loop -->
  11. <!-- Start the pagination functions after the loop. -->
  12. <div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
  13. <div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
  14. <!-- End the pagination functions after the loop. -->
  15. <?php else : ?>
  16. <?php _e( 'Sorry, no posts matched your criteria.' ); ?>
  17. <?php endif; ?>

ページネーションリンクを表示するためのメソッド

ページネーションされているループのテンプレートファイルの外でこれらのページネーション関数を使用する場合、グローバル変数$wp_queryを呼び出す必要があります。

  1. function your_themes_pagination() {
  2. global $wp_query;
  3. echo paginate_links();
  4. }

WordPressには、ループ内の他のページへのリンクを表示するための多数の関数があります。これらの関数のいくつかは、非常に特定のコンテキストでのみ使用されます。単一の投稿ページでは異なる関数を使用し、アーカイブページでは異なる関数を使用します。次のセクションでは、アーカイブテンプレートのページネーション関数について説明します。その後のセクションでは、単一投稿のページネーションについて説明します。

シンプルなページネーション

posts_nav_link

最もシンプルな方法の1つは、posts_nav_link()です。ループの後にテンプレートに関数を配置するだけで、適用可能な場合は次の投稿ページと前の投稿ページへのリンクの両方が生成されます。この関数は、シンプルなページネーション要件を持つテーマに最適です。

  1. posts_nav_link();

next_posts_link
& prev_posts_link

テーマを構築する際は、next_posts_link()prev_posts_link()を使用して、前の投稿ページリンクと次の投稿ページリンクの表示位置を制御します。

  1. next_posts_link();
  2. previous_posts_link();

ページネーションリンクをPHP変数に渡す必要がある場合は、get_next_posts_link()get_previous_posts_link()を使用できます。

  1. $next_posts = get_next_posts_link();
  2. $prev_posts = get_previous_posts_link();

数値ページネーション

多くのページのコンテンツがある場合、ユーザーが次または前の投稿を繰り返しクリックするのではなく、ページ番号のリストを表示する方が良い体験です。WordPressは、数値ページネーションリストを自動的に表示するためのいくつかの関数を提供しています。

WordPress 4.1以上の場合

より堅牢なページネーションオプションが必要な場合は、WordPress 4.1以降用のthe_posts_pagination()を使用できます。これにより、前のページと次のページの投稿へのリンクを持つページ番号のセットが出力されます。

  1. the_posts_pagination();

WordPress 4.1以前の場合

古いバージョンのWordPressをサポートするページネーションが必要な場合は、paginate_links()を使用する必要があります。

  1. echo paginate_links();

単一投稿間のページネーション

前述のすべての関数は、インデックスページとアーカイブページで使用する必要があります。単一のブログ投稿を表示している場合は、prev_post_linknext_post_linkを使用する必要があります。次の関数をsingle.phpのループの下に配置します。

  1. previous_post_link();
  2. next_post_link();

投稿内のページネーション

WordPressは、その投稿のページネーションを有効にするために投稿コンテンツに配置できるタグを提供します:

  1. そのタグをコンテンツ内で使用する場合は、[wp_link_pages](https://developer.wordpress.org/reference/functions/wp_link_pages/)関数がループ内のsingle.phpテンプレートに配置されていることを確認する必要があります。
  2. ``````bash
  3. <?php if ( have_posts() ) : ?>
  4. <!-- Start of the main loop. -->
  5. <?php while ( have_posts() ) : the_post(); ?>
  6. <?php the_content(); ?>
  7. <?php wp_link_pages(); ?>
  8. <?php endwhile; ?>
  9. <!-- End of the main loop. -->
  10. <?php endif; ?>
  11. `