WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

プラグインを使わずページングを作るthe_posts_pagination関数

ちなみにこの記事はWordPress4.1以上を使用している方のみ使用することができる内容になっております

ページングを自作する

WordPressでサイトの運営をしていると、ページングを使用することは結構ありますよね!ページングはプラグインを使えば簡単に入れられるのですが、プラグインを使用すると重くなる可能性がありますし、自由にカスタマイズするのが難しくなってしまうので今回は自作することにしました!!

ページングとは?: 記事一覧を表示した際などに100件ある記事を1ページに10件表示を10ページにしたり分割することです。
例えばこんなの
スクリーンショット 2015-04-08 14.41.24

the_posts_pagination関数

the_posts_pagination関数はWordPressの中でも新しい関数になります。
使い方のコードはこちらです!!

the_posts_pagination($args)

$args = ページネーションに入れたい配列

the_posts_pagination ( array (
                        'mid_size' => 1
                        'prev_text' => __ ( 'Previous page', 'twentyfifteen' ),
                        'next_text' => __ ( 'Next page', 'twentyfifteen' ),
                        'before_page_number' => '<span class="meta-nav screen-reader-text">' . __ ( 'Page', 'twentyfifteen' ) . ' </span>'
                    ) );

the_posts_pagination($args)の$args内に指定できる配列は以下になります!!
キー: デフォルト: 説明

  1. base: URLを参照しページ番号の付いたリンクを生成
  2. format: ページネーションのパーマリンク構造を指定
  3. total: 全体のページ数
  4. current: 現在のページ
  5. end_size: ページ番号の両端にいくつの数字を表示するかを指定
  6. mid_size現在のページ前後のページ番号をいくつ表示するかを指定
  7. prev_nextリスト内に「次へ」「前へ」のリンクをいれるかどうかを指定
  8. next_text: 次ページのリンクへ遷移する時のリンク文言
  9. prev_text: 前ページのリンクへ遷移する時のリンク文言
  10. type: 戻り値のコントロール
  11. add_args: 追加のクエリ引数の配列を指定
  12. add_fragmentリンクに付け加える文字列
  13. before_page_number各ページの前に表示する文字列
  14. after_page_number各ページの後ろに表示する文字列
  15. screen_reader_textスクリーンリーダに入れる文言

実装

// functions.phpに記載

function get_per_page(){
    global $wp_query;
    // 結果の件数を取得
    $fonud_posts = $wp_query->found_posts;
    // ページ当たりの件数を取得
    $page_range = get_query_var('posts_per_page');
    // 現在のページを取得
    $paged = get_query_var('paged') ?get_query_var('paged') :1 ;
    // 現在のページの開始件数を取得
    $start = $page_range * ($paged-1) + 1;
    // 現在のページの終了件数を取得
    $end = $page_range * $paged;
    if($fonud_posts <= $end){
        // 結果の件数が終了件数より小さい場合、終了件数に設定
        $end = $fonud_posts;
    }
    if($end == 0){
        // 終了件数が0の場合場合、開始件数も0に設定
        $start = 0;
    }
    return $fonud_posts . '件中 ' . $start .' - '. $end . "件";
}

$nav =  getp_er_page();
the_posts_pagination( array (
                        // prevに表示するタグ
                        'prev_text' => '<i class="icon ion-chevron-left"></i>',
                        // nextに表示するタグ
                        'next_text' => '<i class="icon ion-chevron-right"></i>',
                        // ページャーの表示形式。default=plain
                        'type' => 'list',
                        // 現在のページ前後に表示するページ数
                        'mid_size' => 1,
                        // ページャー上に表示されるh2タグ
                        'screen_reader_text' => $nav
                    ) );


おわり

参考文献のすくないthe_posts_pagination()ですが、使用してみるととても便利ですね!!
はじめにも言いましたがthe_posts_pagination()はWordPress4.1以上で運営している方しか使えませんのでご了承くださいませ。

関連記事

ページ上部へ戻る