【WordPress】プラグインなしのページネーション実装方法

WordPressを使用する際、多くのサイトオーナーはプラグインに頼ってページネーションの機能を追加します。しかし、カスタムテーマを使用している場合や、プラグインに依存せずに綺麗なページネーションを実装したい場合もあります。今回は、そんな方々のために、プラグインを使用せずにWordPressのテンプレートにページネーションを追加する方法を解説します。

関数の準備

まず最初に、ページネーション機能を追加するための関数をfunctions.phpファイルに追記します。この関数は、ページネーションの設定をカスタマイズするためのものです。

function custom_pagination($numpages = '', $pagerange = '', $paged='') {
  if (empty($pagerange)) {
    $pagerange = 2;
  }

  if (empty($paged)) {
    $paged = 1;
  }
  if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
  }

  $pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('«'),
    'next_text'       => __('»'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
  );

  $paginate_links = paginate_links($pagination_args);

  if ($paginate_links) {
    echo "<nav class='custom-pagination'>";
    echo $paginate_links;
    echo "</nav>";
  }
}

このコードにはいくつかのパラメータがあり、それぞれのパラメータをカスタマイズすることでページネーションの表示方法を変更することができます。

テンプレートにページネーションを追加

次に、実際にページネーションを表示したいテンプレートファイル(archive.phpやindex.phpなど)に、以下のコードを追加します。

if (function_exists("custom_pagination")) {
  custom_pagination($wp_query->max_num_pages, "range-to-display", get_query_var("paged"));
}

このコードは、前に作成したページネーションの関数が存在するかどうかを確認し、存在する場合にページネーションを表示するものです。

ページネーションのスタイルをカスタマイズ

ページネーションの基本的な機能はこれで完了ですが、見た目を自分のサイトのデザインに合わせてカスタマイズするため、style.cssにスタイルを追加します。

.custom-pagination {
    text-align: center;
    margin: 20px 0;
}

.custom-pagination a, .custom-pagination span {
    margin: 0 2px;
    padding: 5px 10px;
    display: inline-block;
    border: 1px solid #ccc;
    color: #333;
}

.custom-pagination a:hover {
    background-color: #f7f7f7;
}

これで、WordPressにプラグインを使用せずにページネーションを実装する基本的な方法が完了しました。ただし、この方法は基本的なものであり、さらに詳細なカスタマイズや追加の機能を取り入れることも可能です。必要に応じて、上記のコードをベースに独自のカスタマイズを行ってください。

paginate_links() 関数のパラメータ

ページネーション機能を追加するためのpaginate_links() 関数のパラメータを紹介します。

自分好みのページネーションにカスタマイズしたい場合は、以下を参考に値を設定してみてください。

パラメータ名 説明
base ページネーションリンクのベースURLを指定。 get_pagenum_link(1) . ‘%_%’
format ページネーションのページ番号が置換される位置を指定。 ‘page/%#%’
total 全ページ数を指定。 50
current 現在のページ番号を指定。 3
show_all すべてのページ番号を表示するかどうかを指定。 true / false
end_size 先頭と末尾に表示するページ番号の数を指定。 2
mid_size 現在のページの前後に表示するページ番号の数を指定。 2
prev_next 前のページと次のページへのリンクを表示するかどうかを指定。 true / false
prev_text 前のページへのリンクのテキストを指定。 ‘前へ’
next_text 次のページへのリンクのテキストを指定。 ‘次へ’
type 戻り値の形式を指定。 ‘plain’, ‘array’, ‘list’
add_args ページネーションリンクに追加のクエリ引数を追加。 array(‘foo’ => ‘bar’)
add_fragment ページネーションリンクの終わりにフラグメントを追加。 ‘#section’

まとめ

この記事を通じて、WordPressのカスタマイズの一環として、プラグインを使わずにページネーションを実装する方法を学んでいただけたと思います。プラグインは便利ですが、自分でコードを追加してカスタマイズすることで、より自分のニーズに合ったサイトを作成することができます。