WordPress ページング

WordPress ページング

WordPressのページング


$paged = get_query_var('paged') ? get_query_var('paged') : 1;//ページング番号の取得
$mun =isset($_GET['mun']) ? $_GET['mun'] : 1; //ページ番号を取得
$args = [
'post_type' => 'municipality',
'posts_per_page' => 10,// 表示する数
'paged' => $mun,
];
}
}

//——————————————————————
// サブクエリのオブジェクトをインスタンス化し、取得
$my_query = new WP_Query($args); ?>
<!– インスタンス化をしたサブクエリに投稿がある時は、投稿の内容を表示する –>
<?php if ($my_query->have_posts()): // 投稿がある場合 ?>
<!–ページング–>
<div class=”paging-area flex-box flex-justify”>
<?php my_result_count_mun(); ?>
<?php //ページリスト表示処理
global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if(strpos($paginate_base, ‘?’) || ! $wp_rewrite->using_permalinks()){
$paginate_format = ”;
$paginate_base = add_query_arg(‘mun’,’%#%’);
}else{
$paginate_format = (substr($paginate_base,-1,1) == ‘/’ ? ” : ‘/’) .
user_trailingslashit(‘mun/%#%/’,’paged’);
$paginate_base .= ‘%_%’;
}
//——————————————————————
echo paginate_links(array(
‘base’ => $paginate_base,
‘format’ => $paginate_format,
‘total’ => $my_query->max_num_pages,
‘mid_size’ => 1,
‘current’ => ($mun ? $mun : 1),
‘prev_text’ => ‘<i class=”fas fa-arrow-left”></i>’,
‘next_text’ => ‘&gt;’,
‘next_text’ => ‘<i class=”fas fa-arrow-right”></i>’,
‘type’ => ‘list’,
)); ?>
</div>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

解説


$paged = get_query_var('paged') ? get_query_var('paged') : 1;//ページング番号の取得
現在のページを取得できる関数になります。

もし、1ページに複数のカスタム投稿を一覧表示をしたいときは、page/2とかで被ってしまうため、
ページングができません。
それを実現するためには、それぞれを独立した処理を書く必要があります。

それが以下のコードになります。
//——————————————————————
global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if(strpos($paginate_base, ‘?’) || ! $wp_rewrite->using_permalinks()){
$paginate_format = ”;
$paginate_base = add_query_arg(‘mun’,’%#%’);
}else{
$paginate_format = (substr($paginate_base,-1,1) == ‘/’ ? ” : ‘/’) .
user_trailingslashit(‘mun/%#%/’,’paged’);
$paginate_base .= ‘%_%’;
}
解説:URLの設定を行なっている。
//——————————————————————
//ページングの出力
echo paginate_links(array(
‘base’ => $paginate_base,
‘format’ => $paginate_format,
‘total’ => $my_query->max_num_pages,
‘mid_size’ => 1,
‘current’ => ($mun ? $mun : 1),//現在のページ
‘prev_text’ => ‘<i class=”fas fa-arrow-left”></i>’,
‘next_text’ => ‘&gt;’,
‘next_text’ => ‘<i class=”fas fa-arrow-right”></i>’,
‘type’ => ‘list’,//ul,liの形式
)); ?>
解説:paginate_links()にて、ページングのオプション設定

//——————————————————————

$mun =isset($_GET['mun']) ? $_GET['mun'] : 1; //ページ番号を取得
$args = [
'post_type' => 'municipality',
'posts_per_page' => 10,// 表示する数
'paged' => $mun,
];
}
}

解説:上記のページングURL設定をした時に、getパラメーターを付け加えているので、それをgetにて取得
その値を、$argsのオプションの$pagedに入れる
そうすることで、独立したページングができる