カスタム投稿とかのね。
症例
<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
'posts_per_page' => 5,
'paged' => $paged,
'post_type' => 'example',
'post_status' => 'publish',
);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ) :
?>
<ul>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><span class="date"><?php echo get_the_date('Y.m.d'); ?></span><span class="ttl"><?php the_title(); ?></span></a></li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_postdata(); ?>
<?php if(function_exists('wp_pagenavi')): ?>
<div class="pager"><?php wp_pagenavi(array('query' => $the_query)); ?></div>
<?php endif; ?>
こうやって作ったとする。
ぱっと見た感じだと一般的な内容である。
ページャーはwp-pagenaviを使ってるけど、使わなかったとしても今回関係のない話。
で、wpにこれをぶち込んで、記事を表示件数以上になるように沢山投稿してページャーが使える状態にして、2ページ目以降のリンクを踏んだら404になる。
なんでや、という話。
設定の干渉
wpの管理画面から、「設定」→「表示設定」→「1ページに表示する最大投稿数」をチェックする。
初期状態だと、ここは「10件」になっている。
上記のコードでは「5件」になっていて、つまりテーマ側の指定数よりもwp側の設定のほうが多い。
テーマ側の指定数よりもwp側の設定数を少なくしなければいけない。
そうしないとページネーションがぶっ壊れる。
カスタマイズ前提でWPを使ってる人は表示設定の数値に依存しない人だろうから、いっそのこと無条件で「1」にしちゃえば良い。
そうすればページネーションが壊れることはない。
コメント