SWELL│ページネーション機能を簡単に実装する方法

SWELLの投稿リストは便利ですが、記事が大量にある場合はページネーションをつけたいですよね。

そういった場合はコードを書いて自作するのですが、

実はSWELLにはページネーション用の関数があるので、それを使うと簡単にページネーションをつけたカスタマイズができます。

その備忘録です。

サンプル

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

SWELLのページネーション機能の実装ポイント

ページネーションの実装のポイントを2点書いておきます。

paged の取得と適用

  • get_query_var('paged') を使って、現在のページ番号を取得
  • paged が取得できない場合は 1 をデフォルト値とする
  • これにより、ページネーションをクリックした際に、適切なページが読み込まれます
$paged = get_query_var( 'paged' ) ?: 1; // 現在のページ番号を取得

ページネーションの表示

  • SWELL_Theme::get_parts( 'parts/post_list/item/pagination', [...] ) を使い、ページネーションを適用
  • 'pages' => $query->max_num_pages:総ページ数を取得し、ページネーションに適用。
  • 'paged' => $paged:現在のページ番号を適用し、正しいページリンクを生成。
SWELL_Theme::get_parts( 'parts/post_list/item/pagination', [
    'pages' => $query->max_num_pages, // 総ページ数
    'paged' => $paged, // 現在のページ
] );

SWELLでページネーション機能を簡単に実装する方法

冒頭に書いた人気記事のページネーションの実装コードを書いておきます。

実装は基本、functions.phpで完結します。

// 人気記事を取得する関数(ページネーション対応)
function get_popular_posts( $limit = 10, $paged = 1 ) {
    $meta_key = defined( 'SWELL_CT_KEY' ) ? SWELL_CT_KEY : 'swell_pv_ct';

    $args = array(
        'posts_per_page'      => $limit,
        'paged'               => $paged, // ページネーション用の現在のページ番号
        'meta_key'            => $meta_key,
        'orderby'             => 'meta_value_num',
        'order'               => 'DESC',
        'post_status'         => 'publish',
        'ignore_sticky_posts' => 1,
        'meta_query'          => array(
            array(
                'key'     => $meta_key,
                'value'   => 0,
                'compare' => '>',
                'type'    => 'NUMERIC'
            ),
        ),
    );

    return new WP_Query( $args );
}

SWELLのPVはSWELL_CT_KEYから取得します。

続いて記事一覧のコードです。

次のサンプルコードを参考にすれば、いろいろページネーションの実装が応用できます。

  • URLをコピーしました!

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次