カスタムフィールドを使っていると、記事検索の条件に使いたいと思う事があります。

そんな時に使えるのがサブクエリです。

ポータルサイトを作る時や、カスタムフィールドに数値データを入力している時に便利です。

WP_Queryクラスを使う

サブクエリの中でも、メインクエリと同じように投稿データを扱う事ができる、WP_Queryクラスを使用します。

今回の内容だけで言えば、get_posts()でも良いんですが。

この先に何か手を加える場合も考えて、WP_Queryで作っておくのが良いかと思います。

サブクエリについては、こちらの記事をご覧ください。

meta_queryで複数のパラメーターを指定する

複数のカスタムフィールドの値をクエリの条件に使う場合は、meta_queryのパラメータを使用するのが便利です。

カスタムフィールドのクエリで使用できるパラメータは以下の通りです。

引用:WP_QueryーWordPress Codexs

このパラメータの中から、記事の一覧を呼び出すに必要なものを設定していきます。

今回はHTMLで用意したフォームから送信された値を使って、該当するカスタムフィールドの値を持つ投稿を呼び出すことが目的です。

なので、

・カスタムフィールドのキー

・カスタムフィールドの値

・テスト演算子

で指定します。

なので、HTMLフォームからデータを受け取る側のPHPファイルにこのように書きます。

カスタム投稿タイプ「test」の公開されている記事の中から、「test-text」というカスタムフィールドの値が「hoge」となっているものをID順に一覧表示する。

という内容です。meta_queryの中で指定していないcompareは初期値が「=」、typeは「CHAR」なので省力しています。

meta_queryはrelationでAND、またはORを使うことで複数のカスタムフィールドを指定することもできます。

relationの初期値はANDなので、ORの時だけ指定するのでも良いです。

これで条件に当てはまる記事一覧を指定することができます。

条件分岐を入れておく

自分が少しハマった経験もあるのですが、HTMLフォームから渡された値が空の場合、動作しない場合があります。

条件検索の場合は、選択されない項目がある場合があるからです。

なので、meta_queryで指定するパラメータを受け取っているかどうかで条件判定しておくと良いです。

まずは、元となるクエリを最初に指定します。

これで、条件が指定されていない場合は、呼び出す投稿タイプの投稿一覧が表示されます。

そして、HTMLフォームから受け取った値があるかどうかを、empty()で判定します。

この書き方であれば、「値があれば」となります。

値があった場合に、クエリのパラメータに追加するmeta_queryのパラメータを指定する。

という流れとなっています。

変数を使う時の「=」の前に「+」を付ければ、追加してくれます。

後はループの内容とクエリの終了

ということで。今回のコード全文です。

HTMLフォームは適当に用意したものなので、チェックボックスやセレクトボックス、ラジオボタンで実装すると良いです。

これでクエリで絞り込んだ記事一覧の表示ができます。

また、カスタムフィールドに何らかの数値を保存している場合、その集計を行う事もできます。

その場合は、wp_reset_query()の前までに書いておくと良いです。

地味にはまった思い出

と、このようにコードを書き構文エラーは出てないんだけど、表示されない・・・

ということで地味にはまってた事があります。

原因は、カスタム投稿に保存されている値と、HTMLフォームから送信した値がずれていたことでした。

送る値とカスタム投稿に保存する値は確認しないといけませんね笑

条件検索の実装でした

運営するWEBサイトの内容にもよりますが、条件検索を用意しておくと読者が便利にサイトを使う事ができるツールの一つとなります。

必要になった時の参考になればと思います。

  ワードプレス関係の他の記事はこちらからどうぞ!  

「ホームページは必要なのだろうか・・・?」

SNSや様々なWEBサービスの登場で、ホームページ以外にもネット上で活動する方法はどんどん増え続けています。
そのようにサービスが増えても、ホームページは中心に据えられる数少ない必要不可欠なツールであると、当社は考えています。
 
株式会社 東建工業-インターネット事業部-では、ホームページ制作のご依頼を随時お受けしております。
 
・企業ホームページの作成
・ブログサイトの作成
・ECサイトの作成
 
など、ご要望に合わせて作成します。ご相談頂いた内容を踏まえて、こちらからご提案もさせて頂きます。
新規ホームページの作成だけでなく、すでに使用されているホームページのリニューアルについてのご相談もお受けしております。
ホームページ開設後の運営・運用についてのご相談もお受けしております。
 
お気軽にお問合せ下さい!
 

 
 

株式会社東建工業-インターネット事業部-
イラスト制作例

当社はオリジナルイラストの制作を行っております。
制作例を一部掲載していますので、是非ご覧ください!

当社のデザイン作成について

当社はWEB制作に加え、デザイン作成と制作も行っております。

・チラシ、パンフレット等の紙媒体に使用するデザインと制作
・オリジナルデザインでのクリアホルダーの制作
・オリジナルデザインでのステッカー、シールの制作
・オリジナルデザインでのプリントTシャツの制作
などなど・・・

様々なデザインに関する制作をご依頼頂けます。
詳しくは当社のデザイン作成についてのブログ記事をご覧ください。

前の記事

次の記事

こちらも読まれています

お問い合せ

この記事の内容や当社についてのお問い合わせはこちらのフォームをご覧下さい。

ご利用前に当社のプライバシーポリシー免責事項をお読み下さい。

送信ボタンを押された時点で、当社プライバシーポリシー又は、免責事項にご同意頂いたものとみなします。