検索してもなかなか核心を突いた答えが出なかったので自力で解決した一例をメモっておきます。
この記事もあなたが抱えている問題の核心をついたものとなるかは分かりませんが一つの例として参考となれば幸いです。
カスタムポストタイプや固定ページに記事一覧を表示する際に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 ); ?>
- 関連記事
-
-
WordPressで日報システムのようなものを作ったので一部をメモ 2015/01/25
-
WordPress 固定ページに新着記事一覧を表示 2015/01/12
-
WordPress query_postsでページ送りが出来ない場合の対処法 2014/12/13
-
WordPress 現在の固定ページのスラッグを取得 2014/12/05
-
WordPressのインストールディレクトリより上のリンクを取る 2014/12/05
-