パラメータで指定した項目の値で投稿をソートする。WordPressのダッシュボードの設定に「1ページあたりの記事の表示数」があります。5件と設定すれば5件、10件と設定すれば10件表示できます。これはまさに「posts_per_page」と同じ役割を果たしています。(固定ページを省いた「投稿タイプ」の集まりである点も、「post_type」のイメージが理解しやすい。日本語版パラメータに渡す値を加工するパラメータの多くは、用意された単語か、整数を与えれば完成します。記事のカテゴリーのIDやスラッグのように、把握するのが難しく指定できない場合があります。こと、「この記事のカテゴリ(タグ)と同じやつを持ってきて」と自動でやってほしいですよね。PHPで記事の持っている情報を加工することで、抽象的な要求を実現することができます。次の項でアルゴリズムを見ていきます処理のフローチャート関連記事を表示するコードをフローチャートに起こしてみました(Fig3)。フローチャートと異なり、データの加工よりも先にWP_Query関数を解説しました。これは、目的によってデータの加工は必ずしも行うとは限らないからです。関連記事を実装するコードはカテゴリ、またはタグをベースに処理しますが、解説はカテゴリIDを使っていきます。Fig3.関連記事を表示するアルゴリズムterm_idはメンバー変数ではなく、連想配列のキーです。画像を差し替えるのが面倒だったので注釈しておきます。最初のif文は必須ではありません。カテゴリやタグを持っていない場合に「関連記事」と見出しが出るのは不格好です。こと、カテゴリやタグを持っていなければif文で処理をスキップしましょう。(タグは「持っていない」場合がありますが、カテゴリはデフォルトで割り当てる設定がダッシュボードにあります)(最後のendifを忘れずに。)(サブループで「関連記事はありません」と表示するのもアリ)カテゴリIDを取り出すWP_Query関数にカテゴリID渡せるようにするには、オブジェクト(配列)の中から取り出す必要があります。「加工」と言っているのはまさにココです。get_the_category関数では、直にカテゴリIDを取得するのではなく、様々な情報がついてきます。オブジェクトから特定のデータを取り出すためには、「foreach」のループ処理で連想配列の値を一つずつ取り出します。get_the_category関数で取得したオブジェクトget_the_category関数で取得したオブジェクトは、様々なデータを持っています。このままではクエリのパラメータに指定することができないので、加工する必要があります。ほしいカテゴリIDは、term_idの値です。term_idnameslugterm_groupterm_taxonomy_idtaxonomydescriptionparentcountfilterタグを取り出す場合、関数名に注意このサイトはタグで関連記事を表示しています。タグを取り出したい場合、WordPress関数はget_the_tagsです。foreach文で配列を反復処理するカテゴリやタグを持っていれば、その数のぶんだけ配列に要素を持っています。foreach文でそれぞれを対象に、アロー演算子でterm_idを取り出します(Fig4)。PHP」でググると「クラスのメンバー変数にアクセスする」ような記述が多かったので、「クラスじゃねぇしな......」という理由で引用はしていません。)「記事が持っているカテゴリID」は複数持っている可能性があるため、定義した配列に保存しています。Fig4.オブジェクトの配列を視覚化したものデバッグについて実際に加工していく過程で、どのようなデータを持っているのか。デバッグすると確認できます(Fig5)。Fig5.オブジェクト・配列をprint_r関数で表示したもの初学者視点では、PHPではecho関数を使いたがるかもしれません。echoでは配列を出力することは出来ません。配列を出力するには、print_r関数またはvar_dump関数を使いましょう。Manualpreタグで囲んだ中でvar_dumpすれば、コードがそのまま表示されるので改行やインデントが行われた状態で表示できます。QiitaWP_Query関数のパラメータに値を渡すforeach文とアロー演算子で取り出したIDの配列をクエリのパラメータに渡します。他のパラメータは前述した通りです。?>クエリを作成したら、最後に忘れずにリセットしましょう。?>サブループで該当する記事を出力するいつもどおり、ifとwhileでループを回します。WordPressのテーマを自作したことがある人なら、home.phpやindex.phpでの使い方と同じです。?>まとめWP_Queryで条件に合う記事を取り出せる条件の指定にはパラメータと値を渡すカテゴリIDやタグIDなど、PHPで加工する必要な場合があるタグを取り出す関数はget_the_tags(複数形)であるforeach文を使うと配列を反復処理できるアロー演算子を使うとオブジェクトの配列から特定のキーにアクセスできるタイムスタンプ投稿しました。18.04アップグレード失敗談【クリーンインストール編】プロフィールchromitz(くろみつ)「自分がつまづいたところは、他の誰かもつまづくだろう。困っている人を助けるために解決策を発信したい」というスタンスでブログを始めました。うつ経験者で、アダルトチルドレン。「動けない完璧主義」を抱えて生きてます。