ワードプレスには組み込みでページネーションを出力する関数があります。この関数を使いページネーションを出力する方法を解説いたします。

query_posts のループで投稿を任意の数取得する

ページネーションはquery_postsが終わった後だけ正しく取得できます。まず、お使いのテーマにquery_postsによるループがあるかご確認いただくか、下記のようにループをプログラムして作成します。

<ul>
<?php
//表示する投稿数
$postperpage = 20;
//現在のページ(自動取得)
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array( 
'posts_per_page' => $postperpage,
'paged' => $paged,
"post_status"     => "publish",
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 )
);

query_posts($args);
if ( have_posts() ) : while (have_posts()) : the_post(); ?>
        <li>
            <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
        </li>
<?php endwhile;
endif;
?>
</ul>

the_posts_paginationでページ数を含む表示のページネーションを出力する

次に下記のコードでページネーションを出力します。

<?php
the_posts_pagination( array(
    'mid_size'  => 2,
    'prev_text' => '前のページ',
    'next_text' => '次のページ',
) );
?>

‘mid_size’ は多くのページがある場合に、中央部に中間のページをいくつ表示するか設定します。そのほかのページは省略されます。

ページネーションのデザインをスタイル設定する

ページネーションはpage-numbers(ページ数)とpage-numbers.current(現在ページ)のクラスが付与されます。下記のようなスタイルをStyle.cssに追加することでページネーションをスタイルすることが可能です。

.page-numbers {
	display: inline-block;
	padding: 5px 10px;
	margin: 0 2px 0 0;
	border: 1px solid #888;
	line-height: 1;
	text-decoration: none;
	border-radius: 2px;
	font-weight: 600;
}
.page-numbers.current,a.page-numbers:hover {
	background: #f9f9f9;
}

WordPress
ワードプレスのテーマのカスタマイズ、修正、コーディングはWPドクターまでお気軽にご相談・ご依頼お送りください