コピペOK!ワードプレスでページ送りがうまく動かない時に(カスタム投稿も可)

ウェブ

pager

ワードプレスにはお世話になりまくりで、本当にワードプレス様様、といった方も多いと思います。

が、いろいろ機能がたくさんあって覚えきれない、前にやったけど忘れてしまう、なんてことが割とよく起こります。

せっかく苦労して乗り越えたのに、しばらく時間が経ってできなくなる・・・

これほど切ないことはありません。

 

ということで、このブログでは『WEB』というカテゴリーにて、ウェブサイト制作の(特にワードプレスを前提とした)覚え書きとして、記事を書いていこうと思います。

第一回目は(すぐに第何回目か忘れると思いますが)、ちょうど最近友達が困っていた内容にしたいと思います。

 

ページャーが動かない(2ページ目以降が404 not found)

カスタム投稿やなんやかんやしていると、やっとある程度ページがまとまって来たのに、いざ投稿記事を上げてみると、ページャーが上手く動かない、404エラーになることがあります。

よくある解決策としては、【設定】>【パーマリンク設定】>【何も変更せず更新】とすることも多いですが、これで解決できないことの方が多いんではないやろか。

そんな時には、以下のコードをindex.phpやcategory.phpなどの一覧ページを表示させるファイルに、丸っと使ってやってくだしい。

 

 

少し解説をば。

 

最初にやること

それは、管理画面の【設定】→【表示設定】→【1ページに表示する最大投稿数】

を『』にします。

以上。

変更するところ

1ページあたりに表示させる投稿数を設定する

コード3行目の【posts_per_page=5】の【5】が表示される数です。
10、15などと任意で変更してください。

ループさせる内容

コード6〜8行目が投稿のループ内容です。
タイトルだのサムネイルだのを記述してください。

関数を終了させるポイント

個人的に結構ハマったポイントなのですが、36行目の【wp_reset_query】で関数を終了するのですが、これを書く位置は、ページャーの外側でないと正しく動作しません。

カスタム投稿でも利用できる

ワードプレス通常の投稿であれば、上記コードで動くはずですが、カスタム投稿の場合は、3行目の【post_type=post】の【post】をタクソノミー名に変更する必要があります。

例えば、【fruit】というカスタム投稿なら、【post】を【fruit】にします。

 

まとめ、と言いたいところですが

いかがでしょうか。とっても簡単ですね。
恐らくは問題が解決されたことと思います。

・・・が、

この【query_posts】という関数は、本来こういった形で使用されるべき関数では無いと言うか、それどころか非推奨の関数のようです。

僕が過去に行き詰まった時に、この方法でクリアして以来ずっと使ってきていたのですが、どうやらよろしくないやり方のようです。

WordPress Codexにも、

この関数はプラグインまたはテーマの中で使われることを想定されていません。

query_posts() は 〜省略〜 問題が発生しやすい方法です。

〜省略〜 モダンな WordPress コードではもっと安定したメソッドを使うべきです。例えばpre_get_posts フックを使った方法などです。ひとことで言うと、query_posts() は決して使うべきではありません。

 




決して使うべきではありません

また、この点について深く言及されている記事も拝見しました。

詳細は、『query_postsを捨てよ、pre_get_postsを使おう』がとても参考になります。



いかがでしたでしょうか?

とりあえず動くから良しとする』などと、事なかれ主義的な思想を持っていると、いつかひっくり返されることになるかもしれませんね。

ワタクシもまだまだ精進が必要でございます。

この件、きちんと解決できれば、また改めてリベンジさせて戴きやす。

こんな記事もよければどうぞ!

プロフィール

niki

age
30+
gender
male

なんやかややっています。
趣味・日常・仕事のことなどを書いています。

© COPYRIGHT 2016 niki weblog