次のmeta_queryを持つカスタムWP_Queryがあります。
$meta_query = array();
$meta_query['relation'] = 'AND';
if(!empty($postcode)) {
$meta_query[] = array(
'key' => 'postcode',
'value' => $postcode,
'compare' => 'LIKE'
);
}
if(!empty($email)) {
$meta_query[] = array(
'key' => 'email_address',
'value' => $email,
'compare' => 'LIKE'
);
}
これに関する問題は、WordPressが%%
の各メタ値を、クエリのLIKE
比較の一部として使用するためにラップしていることです。例えばWHERE meta_value LIKE '%[email protected]%'
パーセント記号を1つだけ使用するようにmeta_queryを設定することは可能ですか。そのため、値が句で始まるか句で終わるかを確認できますか?例:WHERE meta_value LIKE 'hello@%'
REGEXP
バージョンを試すことができます:
'meta_query' => array(
array(
'key' => 'email_address',
'value' => '^hello@',
'compare' => 'REGEXP',
)
)
^
は文字列の先頭に一致します。
詳細については、REGEXP
ここ にあるMYSQLリファレンスを確認できます。
これらはmeta compare
パラメータの 可能な値 です。
'=', '!=', '>', '>=', '<', '<=',
'LIKE', 'NOT LIKE','IN', 'NOT IN',
'BETWEEN', 'NOT BETWEEN', 'NOT EXISTS',
'REGEXP', 'NOT REGEXP', 'RLIKE'
wordPress 3.9.2によると ソース 。
MYSQLから 参照 :
Name Description
------------------------------------------------------
NOT REGEXP Negation of REGEXP
REGEXP Pattern matching using regular expressions
RLIKE Synonym for REGEXP