固定ページでタクソノミーの一覧を出したい時、カスタム投稿のカスタムタクソノミーも含めて表示したい時はクエリーを上書きするか
WP_Queryクラスを利用します。
1ページ目は指定通りに表示されますが2ページ目以降はうまく表示されないことがあるのでそこらへんの問題を解決できそうなヒントになる記事をまとめていきます。
WP_Queryを利用して2ページ目以降が表示されない問題についての記事
WP_Queryを使用した時の次の記事・前の記事について
上記の参考URLをもとに必要としてた環境で実装したソースは下記です。
functionsp.php
<?php
function wp_query_pagination( $pages = '', $range = 4 ) {
$showitems = ( $range * 2 ) + 1;
global $paged;
if ( empty( $paged ) ) {
$paged = 1;
}
$nextpage = $paged + 1;
$prevpage = $paged - 1;
if ( $pages == '' ) {
global $wp_query;
$pages = $wp_query->max_num_pages;
if ( ! $pages ) {
$pages = 1;
}
}
if ( 1 != $pages ) {
echo "<div class=\"pagination\">";
if ( $paged > 1 ) {
echo '<a href="' . get_pagenum_link() . 'page/' . $prevpage . '">前へ</a>';
}
if ( $pages > $paged ) {
echo '<a href="' . get_pagenum_link() . 'page/' . $nextpage . '">次へ</a>';
}
echo "</div>\n";
}
}
page-〇〇.php
<?php
get_header();
$post_terms_slug = $post->post_name;
?>
<header>
<p>リスト数
<small>
<?php
$list_term_loop = array(
'post_type' => array( 'custom_post01', 'custom_post02' ),
'post_status' => 'published',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'custom_taxonomy01',
'field' => 'slug',
'terms' => $post_terms_slug,
'include_children' => true,
'operator' => 'IN'
),
array(
'taxonomy' => 'custom_taxonomy02',
'field' => 'slug',
'terms' => $post_terms_slug,
'include_children' => true,
'operator' => 'IN'
),
),
'numberposts' => - 1
);
$num = count( get_posts( $list_term_loop ) );
echo $num;
?>件
</small>
</p>
</header>
<div class="new-arrival-post-list">
<h2 class="post-list-title">
<?php the_title(); ?>
</h2>
<ul class="posts">
<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$term_loop = new WP_Query( array(
'paged' => $paged,
'post_type' => array( 'custom_post01', 'custom_post02' ),
'post_status' => 'published',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'custom_taxonomy01',
'field' => 'slug',
'terms' => $post_terms_slug,
'include_children' => true,
'operator' => 'IN'
),
array(
'taxonomy' => 'custom_taxonomy02',
'field' => 'slug',
'terms' => $post_terms_slug,
'include_children' => true,
'operator' => 'IN'
),
),
) );
while ( $term_loop->have_posts() ) :$term_loop->the_post();
echo '<li>';
the_title();
echo '</li>';
endwhile;
?>
</ul>
<div class="posts-nav-link">
<?php
if ( function_exists( "wp_query_pagination" ) ) {
wp_query_pagination( $term_loop->max_num_pages );
} ?>
</div>
</div>
<?php get_footer(); ?>