WordPress ループ時ページナビゲーション

ページナビゲーションで時間を食ったので、備忘録的に残しておきます。
メインループで処理を行なっている時は、function.php内で

pre_get_postsを使用して表示件数を制御しています。
taxonomy内メインループのページネーション


<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

/* (ステップ2)データの表示 */


if (have_posts()): ?>
<?php while (have_posts()) : the_post(); ?>

/*-- ループ処理内容--*/ 

<?php endwhile; ?>
<?php else:?>
<p class="yet-message">〇〇は見つかりませんでした</p>

<?php endif; wp_reset_postdata(); ?>
</div>
</div>
</div>


<!-- ナビゲーション -->

<div class="pnavi__block">

<div class="pnavi">

<?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('paged', '%#%');
}
 else {
$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
user_trailingslashit('page/%#%/', 'paged');;
$paginate_base .= '%_%';
}

echo paginate_links( array(
'base' => $paginate_base,
'format' => $paginate_format,
'total' => $wp_query->max_num_pages, 

/*-- ↑ $wp_queryメインループ仕様 --*/

'mid_size' => 5,
'current' => ($paged ? $paged : 1),
));
?>
</div>
固定ページ内 サブループ時のページナビゲーション

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
/* (ステップ1)データの取得 */
$query = newWP_Query(
array(
'post_type' => array('カスタム投稿'),
'paged' => $paged,
'posts_per_page' => 15,
'order'=>'ASC',
)
);
?>
<?php 
if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post();?>
/*-- ループ処理内容 --*/
<?php endwhile; ?>
<?php else:?>
<p class="yet-message">〇〇が見つかりませんでした</p>
<?php endif; wp_reset_postdata(); ?>
</div>
</div>
</div>
/*-- ナビゲーション --*/ 
<div class="pnavi__block">
<div class="pnavi">
<?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('paged','%#%');
}else{
$paginate_format = (substr($paginate_base,-1,1) == '/' ? '' : '/') .
user_trailingslashit('page/%#%/','paged');
$paginate_base .= '%_%';
}
echo paginate_links(array(
'base' => $paginate_base,
'format' => $paginate_format,
'total' => $query->max_num_pages,
/*-- $query サブクエリ名 --*/
'mid_size' => 1,
'current' => ($paged ? $paged : 1),
'prev_text' => '< 前へ',
'next_text' => '次へ >',
)); ?>
</div>
</div>
archiveやタクソノミーページなど、アーカイブページに使用される。
メインループ使用時のナビゲーション
<?php
$args = array(
'mid_size' => 1,
'prev_text' => '<<前へ',
'next_text' => '次へ>>',
'screen_reader_text' => ' ',
);
the_posts_pagination($args);
?>

投稿者 @rongai