プラグイン未使用チャレンジシリーズ。
WordPressの記事一覧ページで、ページ送り(ページネーション)をカスタマイズする方法をご紹介します。やはりプラグインを使用せずに実装するとパフォーマンスやセキュリティの面でも安心ですね。
ページ送り制御の基礎知識
ページ送り(ページネーション)は、WordPressの記事一覧ページで複数のページにわたる投稿を表示する際に利用されます。デフォルトでは、前へ、次へのリンクが表示されますが、この制御をカスタマイズする方法を書いていきます。
ページ送りを表示するテンプレートファイルの編集
例としてまず、テンプレートファイル index.php
を編集します。ページ送りを表示するためのコードを追加します。テンプレートファイルの適切な場所に以下のコードを追加してください。
<?php
// ページ送りを表示する
$big = 999999999; // 十分大きな数を指定
$paginate_links = paginate_links(array(
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $query->max_num_pages,
'prev_next' => true,
'prev_text' => __('前へ'),
'next_text' => __('次へ'),
));
if ($paginate_links) {
echo '<div class="information-archive__pagination">' . $paginate_links . '</div>';
}
?>
上記のコードは、ページ送りを実現するための必要なコードです。$big
変数には十分に大きな数を指定し、paginate_links
関数を使ってページ送りのリンクを生成しています。また、prev_text
パラメーターと next_text
パラメーターを設定することで、「前へ」「次へ」というテキストを表示しています。
「前へ」「次へ」が不要な場合
番号だけを表示させるには、 prev_text
と next_text
パラメーターを空にすることで前へ、次へのリンクを表示しないように設定できます。また、 type
パラメーターを plain
に設定することで、ページネーションの数字がリンクにならず、プレーンテキストとして表示されます。以下がコードになります。
$paginate_links = paginate_links(array(
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $query->max_num_pages,
'prev_next' => false,
'type' => 'plain',
));
番号を囲っているspanに任氏のクラス名を付与する
paginate_links()
関数のbefore_page_number
パラメーターとafter_page_number
パラメーターを使用して、選択されたページ番号を括る要素にクラスを追加することができます。
以下のコードでは、選択されたページ番号を <span>
要素で括り、current-page
クラスを付けています。
$paginate_links = paginate_links(array(
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $query->max_num_pages,
'prev_next' => false,
'type' => 'plain',
'before_page_number' => '<span class="current-page">',
'after_page_number' => '</span>',
));
このように設定することで、選択されたページ番号が <span class="current-page">
と </span>
で括られ、クラス名 current-page
が付けられます。必要に応じて、クラス名を変更することもできます。
以上がWordPressでページ送りを制御する方法となります。自分なり調べてプラグインを使わずにテンプレートファイルを編集することで、どうにか完成しているので、もう少しキレイな書き方もあるかもしれませんが、どうかご了承ください。