CHIPS

制作チップス

Wrordpress ページネーション(ページ送り)を実装する

2025年6月27日

カテゴリー: 制作チップス

基本的なページネーション

paginate_links()

テンプレートファイルの書き方

<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'paged' => $paged
);

$the_query = new WP_Query($args);

if ($the_query->have_posts()) :
    while ($the_query->have_posts()) : $the_query->the_post();
        // 投稿の表示コード
        the_title('<h2>', '</h2>');
        the_excerpt();
    endwhile;

    // ページネーションの表示
    echo paginate_links(array(
        'total' => $the_query->max_num_pages,
        'current' => $paged,
        'mid_size' => 2,
        'prev_text' => '« 前へ',
        'next_text' => '次へ »',
    ));

    wp_reset_postdata();
else :
    echo '<p>投稿が見つかりませんでした。</p>';
endif;
?>

functions.php に独自関数を追加する方法

カスタムページネーション

function my_custom_pagination($custom_query = null) {
    global $wp_query;
    $query = $custom_query ? $custom_query : $wp_query;

    $big = 999999999;

    echo paginate_links(array(
        'base'    => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format'  => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'total'   => $query->max_num_pages,
        'prev_text' => '« 前へ',
        'next_text' => '次へ »',
    ));
}

テンプレートファイルの書き方

<?php my_custom_pagination($the_query); ?>

おまけのCSS・・

基本形

HTML

<div class="pagination">
  <a class="prev page-numbers" href="...">« 前へ</a>
  <a class="page-numbers" href="...">1</a>
  <span class="page-numbers current">2</span>
  <a class="page-numbers" href="...">3</a>
  <a class="next page-numbers" href="...">次へ »</a>
</div>

CSS

/* ページネーション全体 */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin: 30px 0;
  flex-wrap: wrap;
}

/* 各リンクの共通スタイル */
.pagination a,
.pagination span {
  display: inline-block;
  padding: 8px 12px;
  border: 1px solid #ddd;
  color: #333;
  text-decoration: none;
  border-radius: 4px;
  font-size: 14px;
}

/* 現在のページ */
.pagination .current {
  background-color: #0073aa;
  color: #fff;
  border-color: #0073aa;
  font-weight: bold;
}

/* ホバー時のスタイル */
.pagination a:hover {
  background-color: #f0f0f0;
  border-color: #aaa;
}

/* 前へ・次へボタンの特別スタイル(必要であれば) */
.pagination .prev,
.pagination .next {
  font-weight: bold;
}

丸ボタン

HTML

<div class="pagination">
  <a class="prev page-numbers" href="...">« 前へ</a>
  <a class="page-numbers" href="...">1</a>
  <span class="page-numbers current">2</span>
  <a class="page-numbers" href="...">3</a>
  <a class="next page-numbers" href="...">次へ »</a>
</div>

CSS

.pagination a,
.pagination span {
  display: inline-block;
  padding: 10px 14px;
  margin: 2px;
  border-radius: 50%;
  background-color: #f8f8f8;
  border: 1px solid #ccc;
  color: #333;
  text-decoration: none;
  transition: all 0.2s ease;
}
.pagination a:hover {
  background-color: #0073aa;
  color: #fff;
  border-color: #0073aa;
}
.pagination .current {
  background-color: #0073aa;
  color: #fff;
  font-weight: bold;
  border-color: #0073aa;
}