KUHAKU
no
MEMOCHO

WP_Queryを使い倒そう【基本編】

WP_Queryを使い倒そう【基本編】のサムネイル

突然だがあなたは記事をもっと思い通りに並べたいと思ったことはないだろうか?

天下のGoogle様やYahoo!様みたくアルゴリズムを組んでみたいと思ったことはないだろうか?

僕は常々思っていた。

更新順、人気順、タイトル順、、、

「おいおい、記事の並べ方ワンパターンすぎだろ」

そう、記事の文字数順や好きな作者順とかで並べ替えられてもいいじゃないか!

でももはやプログラマーと呼べるのかもわからない三流の僕がそんな高望みするのは無理にもほどがある、、、

うわぁ、お先真っ暗絶壁昇天。

永遠とアルゴリズムなんて言葉とは無縁だ。

と素直に自分の無力さに従おうとしたそのとき、偶然にも見つけてしまった奇跡を起こすワードプレス関数

関数リファレンス/WP Query - WordPress Codex 日本語版
wpdocs.osdn.jp

今回はこのWP_Queryについて深々と掘り下げて行こうと思う。

この記事は連載記事です。

WP_Queryって何?

いやいやいや、前置き長い上にいきなり出てきたWP_Queryって何なの?って方の為に一から詳しく説明していこうかと思う。

記事を取り出す仕組み

いきなりWP_Queryとか言っても説明しづらいのでまずはワードプレスで記事を表示するところから見ていこうかと思います。

まずは基本形のこれ↑

ワードプレスを使っている人なら誰でも一回はお目にかかったことは有るであろうこれです。

これは、トップページで使用したり、カテゴリーアーカイブやシングルページ、固定ページでも使用するとってもポピュラーな記事取得の形です。

トップページで使用すれば新着の記事一覧が表示され、カテゴリーアーカイブならそのカテゴリーの記事一覧が表示され、シングルページや固定ページならそのページの内容が表示されますが、なぜ書いていることが同じなのにそれぞれ作用が違うのでしょうか?

天の定め。

では当然ありません。
ワードプレスが見えないところで色々とサポートしてくれているのです。

一見何もしてなさそうなワードプレスさんですが、「このページで使った時はあの記事の情報をとってこい!」っていう指令を出してくれているんです。
この見えない指示のおかげで同じコードで色々なものを表示することができます。

ではこの指示にちょっとわがままを言いたくなってきたときはどうすればいいのか?

例えば、トップページの新着一覧にどうしても特定カテゴリーの記事を出したくないなという時。
実際テーマなどをカスタマイズしたり制作したりしてるとちょくちょくこういう場面に出くわします。

そんなときに大活躍なのが、そう。あやつなのです。

特定の記事を取得する方法

ワードプレスの記事取得はどのように行われているかというと、先述した通り見えない指示に従って自動で取得をしてくれるような仕組みになっています。

ただこの指示にちょっかいを出したいとき、ワードプレスではその方法をいくつか用意してくれています。

ざっとご紹介するとこんな感じです。

  • query_posts
  • get_posts
  • pre_get_posts
  • WP_Query
  • その他もろもろ

たかが並び替えにこんだけの手段があり、ワードプレスを触りたての人には何が何だか分からないですよね。
それぞれにメリット、デメリットがあるのですが、正直WP_Queryがこの中で最強の並び替え手段だと思っています。
※個人の感想です。

なぜかは後で説明をしますが、まあ騙されたと思って使ってみてください。
並び変えたい放題で楽しくなってきちゃいますよ!笑

オススメな理由

なぜ僕がこんなにお勧めするのかというと、ほかの並び替えは簡単で分かりやすい分、失敗が多いというのが一番でかい理由です。

先程から僕が見えない指示といっているものをワードプレスではメインクエリと呼びます。
先述のquery_postsは初心者の方が一番わかりやすく、手を出しやすい並び替え、記事取得のコードですが実はこの関数は、メインクエリに上書きをしています。

そのため思ってもいない指示が出てしまい、ページャーが動かなかったり、単純な並び替えしかできなかったりと中盤になるにつれ使いづらくなってきます

その他、get_postsはforeachを使用するため、PHP初心者の方には少しわかりづらいところがあるかと思います。pre_get_postsもアクションフックなので初心者の方にはハテナの雨が降り注ぐかと思うのでオススメしません。

では、WP_Queryを使用して思い通りの記事を取得するにはどのようにすればいいのか。サンプルコードとともにご説明します。

使用方法

WP_Queryの基本的な使用方法は以下のようなコードになります。

一見何が何だか分からない難しそうなコードに見えますが一つずつ解説を付けていくと実はとても簡単です。

こうしてみるとそこまで難しいことは書いてありません。
一番最初に書いた記事取得のコードの、have_postsとthe_postの前に$the_queryがくっついてきただけですね。

ここでは、3行目に指示を作成と書いてありますが、$argsが空なので特に何もないです。

実際に指示を出していく際にはこの$argsに指示をずらずらと書き込んでいきます。

この指示がまあ項目が多くてリファレンスを見ても嫌気がして引き返す方多数じゃないでしょうか?
リファレンスには、メソッド・プロパティ・パラメータ等、ちんぷんかんぷんな様々な用語がずらずらと書いてありますが、この中で気にするのはパラメータのみで大丈夫です。

次回はサンプルコード編でそれぞれの具体的な使用方法と使用例を書いていこうと思います。

それではまた次回!

FB Comment