WordPress query_postsでページ送りが出来ない場合の対処法

/ WordPress / Comment[0]

検索してもなかなか核心を突いた答えが出なかったので自力で解決した一例をメモっておきます。
この記事もあなたが抱えている問題の核心をついたものとなるかは分かりませんが一つの例として参考となれば幸いです。

カスタムポストタイプや固定ページに記事一覧を表示する際にquery_postsを使用すると、ページャーが効かないことがあります。その原因としてはquery_postsはメインクエリを書き換えてしまうためです。query_postsを使用した場合、全ての引数を指定してあげなければなりません。

query_postsに引数を追加する

$query_stringを追加

$query_stringにはGETリクエストの引数が格納されています。例えばarchive.phpに「print $query_string;」と書き、月別アーカイブを見ると「m=201502」と表示されます。

<?php query_posts( $query_string ); ?>

paged=$pagedを追加

通常、ページ送りをするとURLの末尾に/page/2/?page=2などと表示されます。

この最後のページ番号が$pagedに代入されています。この値をquery_postsの引数のpagedに代入することで現在のページが指定されるというわけです。

<?php query_posts( $query_string . '&posts_per_page=10&paged=' . $paged ); ?>

$paged = 2;を加えてやると2ページ目が表示されると思います。
もし表示されないのであれば、管理画面で表示件数が動作を邪魔をしている可能性が高いかと思われます。

管理画面の表示件数を1件に設定

通常のアーカイブ以外では管理画面の表示件数がページャーの動作に影響を与えることがあります。
管理画面の表示件数を1に設定し、全てのアーカイブページをquery_postsのposts_per_page=(任意の表示件数)で取得するように徹底します。

<?php query_posts( $query_string . '&posts_per_page=10&paged=' . $paged ); ?>
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可