お疲れ様です、神田です。
今回はWordpressのカスタムフィールドの比較について。
WordPress案件を扱っていると、カスタムフィールドの値で検索をする
といった事例が多くあります。
今回はこの比較についてまとめましたので、参考にしてください。
カスタムフィールドの比較について
まず、カスタムフィールドの設定値から記事を絞り込むには、次の関数を使用します。
この関数は条件を指定すると投稿を絞り込んでくれます。
その引数の一つに、meta_queryというものがあります。
metaはカスタムフィールドの情報を指します。
つまり、カスタムフィールドの値で絞り込んでくれるということですね。
このmeta_queryはその中にさらに配列を持つことが出来ます。
配列ではどのカスタムフィールドと比較するか、
値はどれか、どのように比較するか、などがあります。
例えば、例を出すと次のような形です。
1 2 3 4 5 |
'meta_query' => array( 'key' => 'info_example', 'value' => $example, 'compare' => '==' ) |
上の構文はカスタムフィールド「info_example」の値が変数「$example」と同じである
投稿のデータが表示されます。
「info_example」は事前に作成しておく必要がありますね。
かなり簡単に投稿の絞り込みができるので、Wordpressは便利ですね。
以下にリファレンスもあるので、参考にしてみてください。
等しい条件を探すのは簡単なんですが、
例えば「値以上」とか「値よりも小さい」といった場合には注意が必要です。
管理画面での入力欄を<input type=”number”>にしても文字列型として登録されるので、仕方ない問題です。
さて、先ほどの例だと変数exampleを数値型にするのは簡単です。
ですが元々文字列で入っているinfo_exampleはどうしましょう?
文字列なので90という数字が入っていても、数値の比較はできなくなってしまいます。
実は、meta_queryには比較する際にカスタムフィールドの値を数値にしてくれるオプションが存在します。
それが「‘type’=>’NUMERIC’」です。
これを指定することで、数値として大小関係を比較してくれます。
例えば、info_exampleの値が70以上の記事は以下で絞り込めます。
1 2 3 4 5 6 |
'meta_query' => array( 'key'=>'info_example', 'value'=>70, 'compare'=>'>=', 'type'=>'NUMERIC' ) |
最後にtypeを追加すると覚えておきましょう。