回答:
あなたが期待するような最初のいくつかの作業:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
そしてNOT LIKE
あなたはこのようになりますことをメタクエリを持つことができるので、あなたは、ワイルドカード記号に追加してみましょうSQL演算子です。
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
これにより、メタ値「name」に文字列「Pat」が含まれるすべての投稿が返されます。この場合、「Pat」、「Patricia」、および「Patrick」がすべて返されます。ここには、 WordPress以外のチュートリアルの説明があります。
ワイルドカード文字を追加する%
必要はありません。これは、デフォルトで@Herbが以下の回答で述べたように追加されるためです。このように:$meta_value = '%' . like_escape( $meta_value ) . '%';
- ソースを参照してください。
IN
そしてNOT IN
、与えられた配列にある(またはない)マッチを選択します。したがって、次のようなことができます。
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
そして、色が赤、緑、青のいずれかに設定されているすべての投稿を取得します。「NOT IN」を使用すると、逆になります。値が配列内にあるもの以外に設定されている投稿はすべて逆になります。
このために生成されたSQLは次のようになります。
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
そしてNOT BETWEEN
あなたが正しいかもしれない値の範囲を定義し、あなたのmeta_queryで配列内の2つの値を与えるためにあなたを必要とすることができます:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
これにより、価格が20〜30のすべての投稿が表示されます。この人は、日付のある例を掘り下げます。
NOT EXISTS
メタデータは設定されていないか、ヌル値に設定されています。そのクエリに必要なのは、キーと比較演算子だけです。
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
この人は、存在しないメタ値を照会する必要があり、他の人とうまくやるために必要でした。
お役に立てれば!
meta_query
配列を使用している場合、キーの先頭にを付けないでくださいmeta_
。あなたが使用している場合$query->meta_key
、$query->meta_value
など、これらはまだ接頭辞を保持しなければなりません。