マジカルスリー・だいすけのなりゆき長者ブログ

沖縄/大阪WEB広告・ホームページ制作・印刷物制作 マジカルスリー 「福」代表のブログ

*

WordPressで記事を取得、ループしたいときに-その2

      2016/09/22

WordPressで記事を取得したいんだけど・・・

WordPressで記事を取得したい初心者の方のため&ど忘れしちゃった初・中級者(私含む)の為にこの記事を残しておこうと思います。

まずはソースから。

  1. get_posts
  2. WP_Query
  3. query_posts

代表的なものだけでもこれだけあります。

しかし、本当に主流として使って欲しいのはここの記事に掲載している方法なのです。
こっちを先に見ていただけると嬉しいかもしれません(๑´ڡ`๑)

サブループ用はget_postsとWP_Query

ざっくりとした説明ですが、

get_postsとWP_Queryはほぼ一緒です(乱暴)

WP_Queryのほうが持っている情報が多いらしいのでこっちを使うのが良いでしょう。

そしてこれらは「サブループ」向けです。

サブループはメインループのようにデータ取得部分を省略できないので、明示的にどのデータを取得するかを指定する必要があります。

つまり、通常の記事表示はメインループ、よくある新着記事一覧の小窓(日付とタイトルだけが並んでるようなやつ)などはサブループを使うと良いかもしれません。

あと、自分もハマったのですが・・・固定ページに記事一覧を出したいようなときの事です。

固定ページはメインループ外なので次の項目に書いたpre_get_postが使えません

そんな時にWP_Query(またはget_posts)を使うと良いと思われます。

メインループとサブループの条件がごっちゃにならないように分けておくのが良いと思います(๑´ڡ`๑)

一方、メインループはpre_get_postとquery_posts

今のところpre_get_post一択だそうです。function.phpに書くのでメンテナンス性がかなり上がります。

詳しくはこちら

一方、query_postsは厳密に正しく扱わないとページネーションなどが上手く動かない場合があります。

つまり、誤動作覚悟になっちゃうわけです(グローバル変数とリセットに気をつければ大丈夫だそうですが)

しかも公式が「推奨されない」指定しております。使えなくなる事は無さそうですが・・・。

でも、世の中はquery_postsが多数を占めています。参考にしたいあのコードもquery_posts。。。

そんな訳でquery_postsの使い方も覚えておくと良いと思います。ループ直前に直書きなので、ささっと使う分には使い勝手が良いのです。
(大きいプロジェクトになると面倒くさそうですが)

 

もっと知りたい方はM-HAND様 WordPressで押さえておきたい!get_posts,WP_Query,query_posts の違いと用例へ。

こちらもオススメです。OXYNOTES様 WordPressで複数のループを使ってカスタム投稿一覧を自在に表示する方法

 - WordPressの事 , , , , ,

Message

  関連記事

.htaccessに最低限設定しておいたほうが良いこと

簡単で結構効果のあるセキュリティとして.htaccessの設定がありますが、最低 …

PHPのバージョン変更したことでエラーが出る

PHPバージョン7系のサーバーからPHPバージョン8系サーバーにサイト移管した時 …

タクソノミー(ターム)の記事一覧を出したい!

あれ?archive.phpで表示してる・・・? WordPressでカスタムタ …

Gist、いいね!

コード見せたいンゴ・・・ WordPressのことでよくコードをお見せする機会が …

mb_substr()使ってもサムネイルの見出しがズレるじゃん!という話

またしても忘備録。 WordPressでよくある、こういう感じの記事表示方法。 …

アーカイブページでタームごとに記事一覧を出力する

カスタム投稿の記事一覧を出したい ターム名1(カスタム投稿の「カテゴリ名」のよう …

Sugar Events Calendar Lite 中国語化

以前のブログの再掲載です(なくなると困る記事なので・・・) Sugar Even …

WordPress 不正アクセスとの飽くなき戦い

不正アクセス・・・それはWEB黎明期から行われてきた悪しき犯罪。 これらと日々戦 …

WordPressのページを印刷しようとするとスタイルが崩れる

WordPressのページを印刷しようとするとガタ崩れする時があると思います。 …

Advanced Custom Fieldsで作ったカスタムフィールドの画像をアイキャッチ画像にする

カスタムフィールドで投稿した画像を自動でアイキャッチ画像にしたかったのですが、A …