【WordPress】カスタムフィールドの比較について【meta_query】

お疲れ様です、神田です。
今回はWordpressのカスタムフィールドの比較について。

WordPress案件を扱っていると、カスタムフィールドの値で検索をする
といった事例が多くあります。
今回はこの比較についてまとめましたので、参考にしてください。

カスタムフィールドの比較について

まず、カスタムフィールドの設定値から記事を絞り込むには、次の関数を使用します。

WP_Query()

この関数は条件を指定すると投稿を絞り込んでくれます。
その引数の一つに、meta_queryというものがあります。
metaはカスタムフィールドの情報を指します。

つまり、カスタムフィールドの値で絞り込んでくれるということですね。

このmeta_queryはその中にさらに配列を持つことが出来ます。
配列ではどのカスタムフィールドと比較するか、
値はどれか、どのように比較するか、などがあります。

例えば、例を出すと次のような形です。

上の構文はカスタムフィールド「info_example」の値が変数「$example」と同じである
投稿のデータが表示されます。
「info_example」は事前に作成しておく必要がありますね。

かなり簡単に投稿の絞り込みができるので、Wordpressは便利ですね。
以下にリファレンスもあるので、参考にしてみてください。

関数リファレンス/WP Query

比較をする場合は要注意!

等しい条件を探すのは簡単なんですが、
例えば「値以上」とか「値よりも小さい」といった場合には注意が必要です。

そもそも、カスタムフィールドに登録される値は型が文字列になるんですよね

管理画面での入力欄を<input type=”number”>にしても文字列型として登録されるので、仕方ない問題です。

さて、先ほどの例だと変数exampleを数値型にするのは簡単です。
ですが元々文字列で入っているinfo_exampleはどうしましょう?
文字列なので90という数字が入っていても、数値の比較はできなくなってしまいます。

実は、meta_queryには比較する際にカスタムフィールドの値を数値にしてくれるオプションが存在します。

それが「‘type’=>’NUMERIC’」です。
これを指定することで、数値として大小関係を比較してくれます。
例えば、info_exampleの値が70以上の記事は以下で絞り込めます。

最後にtypeを追加すると覚えておきましょう。