41:サブループ用ページネーション出力関数
公開日:2019年07月30日
サブループ用ページネーション出力方法について。
ページ番号取得方法
サブループではページ番号情報を「get_query_var(‘page’)」で取得します。
メインループの「get_query_var(‘paged’)」と違うので注意します。
最大ページ数の取得
サブループの最大ページ数情報はWP_Queryオブジェクトを代入した変数を使用します。
「$the_query = new WP_Query($args);」
メインループで最大ページ数情報は暗黙変数「$wp_query」を使用します。
サブループ用ページネーション関数
functions.php
「global $the_query;」と関数内で使用している「$the_query」はサブループ情報を入れた変数名にすること。
「$the_query = new WP_Query($args);」
/********************************* サブループページネーション出力用関数 **********************************/ function subPagination($end_size = 1, $mid_size = 2, $prev_next = true) { global $the_query; $page_format = paginate_links( array( 'current' => max(1, get_query_var('page')), 'total' => $the_query->max_num_pages, 'type' => 'array', 'prev_text' => '前へ',//前へのリンク文言 'next_text' => '次へ',//次へのリンク文言 'end_size' => $end_size,//初期値:1 両端のページリンクの数 'mid_size' => $mid_size,//初期値:2 現在のページの両端にいくつページリンクを表示するか(現在のページは含まない) 'prev_next' => $prev_next,//初期値:true リストの中に「前へ」「次へ」のリンクを含むか ) ); $code = ''; if( is_array($page_format) ) { $paged = get_query_var('page') == 0 ? 1 : get_query_var('page'); $code .= '<div class="pagination">'.PHP_EOL; $code .= '<ul>'.PHP_EOL; foreach ( $page_format as $page ) { $code .= '<li>'.$page.'</li>'.PHP_EOL; } $code .= '</ul>'.PHP_EOL; $code .= '</div>'.PHP_EOL; $code .= '<div class="pagination-total">'.$paged.'/'.$the_query->max_num_pages.'</div>'.PHP_EOL; } wp_reset_query(); return $code; }
ページネーションありサブループ
サブループ表示テンプレート
<?php // ページ番号取得 $paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1; // サブループ条件 $args = array( 'post_type' => 'post', // 投稿 'posts_per_page' => 2, // 表示件数 'category_name' => 'works', // カテゴリ 'paged' => $paged, // ページ番号 ); // サブループ情報を取得して「$the_query」変数に代入 $the_query = new WP_Query($args); ?> <?php /***** サブループ開始 *****/ ?> <?php if ($the_query->have_posts()) : ?> <?php while ($the_query->have_posts()) : ?> <?php $the_query->the_post(); ?> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <div class="box"> <a href="<?php the_permalink(); ?>"> <div class="item-title"><?php the_title(); ?></div> </a> </div><!-- .box --> <?php /**** ▲1件分の投稿内容HTML ****/ ?> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_postdata(); ?> <?php /***** サブループ終了 *****/ ?> <?php // ページネーション ?> <?php if ( subPagination() ) { echo subPagination(); } ?>
同じカテゴリーのコンテンツ