[wp]一覧の2ページ目以降が出ない場合のチェック事項

カスタム投稿とかのね。

症例

<?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」にしちゃえば良い。
そうすればページネーションが壊れることはない。

コメント

タイトルとURLをコピーしました