query_postsを使ったアーカイブページのカスタマイズで「WP-Pagevavi」によるページ送りが404になる件。

2014年1月8日

お客様のサイトを制作していて、アーカイブページテンプレートをquery_postsを使って投稿件数を指定するカスタマイズをしていて、プラグイン「WP-Pagevavi」を使ったページ送りをテストしていましたが

<?php if (have_posts()) : query_posts( $query_string . ‘&posts_per_page=XX&paged=’.$paged); ?>
<?php while ( have_posts() ) : the_post() ?>

Loopさせる内容

<?php endwhile; ?>
<?php endif; wp_reset_query(); ?>

どうしても2ページ以降は404ページを表示してしまう。
どうしてかなあ?と調べてみると、

posts_per_pageの件数(XX)が、管理画面の「設定 > 表示設定」で1ページの表示を設定している投稿数より多くないとWP-Pagevaviが正常に機能しないようです。 メインクエリーでは2ページ目が存在しないので、アーカイブテンプレートが読み込まれず、query_postsも実行されないので404となってしまうのです。(大曲さんにおしえてもらいました!)

「設定 > 表示設定」をに触っていなければ、デフォルトは10件。
10に満たない少ないテスト投稿を使って、表示テストなんかやってるとハマってしまいます。

追記:  pre_get_posts を用いて、メインクエリーそのものを変えてしまう方がいいんだそうです。(大曲さんにおしえてもらいました!)

ページトップへ