wordpress

諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義

img

WordPress独自テーマを作る際に私がハマりがちなのが、ページ送り。 記事一覧の取得にquery_postsを利用しているとページ数や条件をうまく取得できず、2ページ以降の記事が表示されない事が多々あります・・。

今回はその「ページ送り機能」がうまくいかないときに使える、 私の知るすべての対処法をメモしておこうと思います。

query_postsとは

記事一覧を表示する際、特定のカテゴリだけ表示させたかったり、作成日順ではなく更新日順に並べたかったり。 そんな要望を叶えてくれるのが query_posts ですね。

たとえばカテゴリIDが3の記事を4つずつ表示したい時はこう。

<?php if (have_posts()) : query_posts('posts_per_page=4&cat=3'); ?>
<?php while (have_posts()) : the_post(); ?>

ここに記事タイトルとかループで表示させたいものを書いておく

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

でもこれを使うとページ送りがおかしくなる事が多いのです。

ページ送りに不具合が出た時の対処法

おかしくなったら以下の3つを試してみましょう :)

①ページナビの記述場所

query_postsの範囲内に書いていますか? wp_reset_query();よりも前に書かないと、せっかくquery_postsで取得した条件がクリアされてしまいますよ。 わたし先週 @jim0912さんに教えていただいて知りましたけどw

②2ページ目に飛んだ時、うまく条件を拾えていますか?

以下の記述を書き加えてみましょう。

ページごとに用意された標準の条件を取得

<?php if (have_posts()) : query_posts($query_string . '&posts_per_page=4&cat=3'); ?>

参考:query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 – btmup Blog [ボトムアップ ブログ] はてなブックマーク - query_posts() を設定すると「WP-PageNavi」プラグインが正常に動作しなくなる件の解決法 – btmup Blog [ボトムアップ ブログ]

③自分のページ番号がわからなくなっちゃってるのかも?

以下の記述で、ページ数を教えてあげましょう。

表示しているページ数を取得

<?php if (have_posts()) : query_posts($query_string . '&posts_per_page=4&cat=3&paged='.$paged); ?>

参考:WordPress › フォーラム » wp-pagenavi 正常表示されない件について はてなブックマーク - WordPress › フォーラム » wp-pagenavi 正常表示されない件について

WP初心者の私が言うのもなんですが、「経験上」だいたいこの3つを書いていればページ送りは動き出します。 このコードに何度助けられたことか。

それでも、どうしても直らなかった時の究極奥義

そんなページ送り機能ですが、時に何をしても直らないことがあります。 そんなとき調べに調べて辿りついたのは、意外なことにダッシュボードにある『表示設定』でした。

どうすれば直るのか。それは・・・

①表示設定で「1ページに表示する最大投稿数」を1件にする

②1ページあたりの表示件数は常にquery_postsで指定する

わたしはこれで無事うごきました。ずいぶんと無理矢理ぽいですけれどw

原因は恐らくですが、『クエリポスツで指定している件数』『管理画面の表示設定で指定している件数』『表示しようとしているカテゴリの記事数』この3つが上手くいっていないようですね。

参考:WordPressでquery_postsを使ったページ送りでNot Foundになる件 – 主に技術的なことを書くブログ はてなブックマーク - WordPressでquery_postsを使ったページ送りでNot Foundになる件 - 主に技術的なことを書くブログ

さいごに

今回の現象はWordPressを使っていく内に必ずといって良いほどぶち当たる問題だと思いますが、 ぶち当たった時に持っているカードが多ければ多いほど、冷静に対処できるはずです。

わたしは何も知らずこんな事になったのですごく焦りました。。 そんなわたしのような目に遭わないよう、たくさんの対処法が有るということを頭の片隅にでも入れておくと、幸せになれると思いますw

以上、霙でした!!