WordPress の the_posts_pagination()
や paginate_links()
を利用してページネーションを実装すると、ページ数が多い場合に途中が 「…(ドット)」 で省略されます。デフォルトではこの省略記号は …
(三点リーダー)ですが、テーマやデザインに合わせてテキストや記号を変更することが可能です。本記事ではその方法を解説します。
paginate_links() を直接カスタマイズする
paginate_links()
関数は 'type' => 'array'
で配列として出力を取得できるため、省略記号を含む要素を差し替えることができます。
<?php
$pagination = paginate_links( array(
'total' => $wp_query->max_num_pages,
'current' => max( 1, get_query_var( 'paged' ) ),
'type' => 'array',
) );
if ( ! empty( $pagination ) ) {
echo '<ul class="pagination">';
foreach ( $pagination as $page ) {
// 省略記号「…」を任意の文字に置換
$page = str_replace( '…', '...', $page );
echo '<li>' . $page . '</li>';
}
echo '</ul>';
}
?>
上記の str_replace()
部分を変更すれば、「…」や「続きを読む」など自由に置き換えることができます。
the_posts_pagination() の場合
the_posts_pagination()
は内部的に paginate_links()
を呼び出しています。'mid_size'
を小さくするとドットが出やすく、大きくするとドットが出にくくなります。mid_size
の調整でドットの表示頻度を変えることも可能です。
<?php
the_posts_pagination( array(
'mid_size' => 2,
'prev_text' => '« 前へ',
'next_text' => '次へ »',
'screen_reader_text' => 'ページ送り',
) );
?>
フィルターフックで一括変更
WordPress には省略記号をフィルタリングできるフック paginate_links_output
は存在しませんが、取得した後に自作関数で置換処理を行う方法が一般的です。functions.php に以下を追記すれば、出力される省略記号を一括で置き換えられます。
<?php
function custom_paginate_dots( $output ) {
return str_replace( '…', '***', $output ); // 「…」を「***」に変更
}
add_filter( 'paginate_links', 'custom_paginate_dots' );
?>
まとめ
paginate_links()
の出力を配列で取得してstr_replace()
で置換する方法the_posts_pagination()
のmid_size
調整でドットの出現頻度をコントロール- フィルターフックや文字置換を利用して一括編集も可能
ページネーションの「…」は小さな部分ですが、デザイン全体の印象に関わります。サイトに合わせて自由にカスタマイズしてみてください。