【WordPress】ページネーションを作成する

web developer プログラミング

固定ページでも、投稿一覧ページでも使えるページネーションを作成します。

仕様

ページネーションの前後に最大・最小のページへ遷移できるボタンを用意し、最大・最小ページから離れたページにいるときにはそれが表示されるようにします。

$rangeに、表示したいページャーの最大数を記入します。(最小値・最大値は含みません)

例1:ページ数が5で$range = 5の場合
3ページ目にいるとき 12345 というページャーが表示されます。
1ページ目にいるとき 123…5 というページャーが表示されます。

例2:ページ数が10で$range = 3の場合
3ページ目にいるとき 123…10 というページャーが表示されます。
5ページ目にいるとき 1…456…10 というページャーが表示されます。

コード

以下のコードをfunction.phpに記入します。

function pagination($current_page = '', $range = 5, $max_publish = 10)
{
    /* ===  表示するページ数設定 === */
    $full_page = ceil(wp_count_posts('introduction')->publish / $max_publish);
    echo '<div>';
    echo '<ol>';
    /* === 最小ページボタン === */
    if ($current_page > 1 + floor($range / 2)) {
        echo '<li><a href=' . get_pagenum_link(1) . '>1</a></li>';
        if ($current_page - floor($range / 2) - 1 != 1) echo '<li>…</li>';
    }
     /* === ページ数 === */
    for ($i = 1; $i <= $full_page; ++$i) {
        if ($current_page == $i) {
            echo '<li><span>' . $i . '</span></li>';
        } elseif (!($current_page - floor($range / 2) > $i || $current_page + floor($range / 2) < $i)) {
            echo '<li><a href=' . get_pagenum_link($i) . '>' . $i . '</a></li>';
        };
    }
    /* === 最大ページボタン === */
    if ($current_page < $full_page - floor($range / 2)) {
        if ($full_page != floor($range / 2) + $current_page + 1) echo '<li>…</li>';
        echo '<li><a href=' . get_pagenum_link($full_page) . '>' . $full_page . '</a></li>';
    }
    echo '</ol>';
    echo '</div>';
}

以下のコードを、ページャーを表示させたい箇所に記入します。

<?php  
        $current_page = get_query_var('paged');
        $current_page = $current_page == 0 ? '1' : $current_page;  
        if (function_exists('pagination')) {
            pagination($current_page, 5, 10);
        }
?>

第1引数には、現在のページを入れます。
第2引数には、表示させたいページャーの最大数を入れます。(最大・最小を除く)
第3引数には、1ページで表示する記事の数を入れます。

なお、既存のテーマを使用しており、固定ページなどにPHPを書くことができない場合は、Insert PHP Code Snippetを使用することで解決できます。

使い方は、こちらの記事で紹介しているのでどうぞ

コメント

タイトルとURLをコピーしました