J'ai un WP_Query personnalisé avec la meta_query suivante:
$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'
);
}
Le problème est que WordPress encapsule chaque méta-valeur dans %%
à utiliser dans le cadre de la comparaison LIKE
dans la requête, par exemple WHERE meta_value LIKE '%[email protected]%'
.
Est-il possible de configurer une meta_query afin qu'un seul signe de pourcentage soit utilisé, afin que nous puissions vérifier si une valeur commence par ou se termine par une phrase? par exemple WHERE meta_value LIKE 'hello@%'
Vous pouvez essayer la version REGEXP
:
'meta_query' => array(
array(
'key' => 'email_address',
'value' => '^hello@',
'compare' => 'REGEXP',
)
)
où ^
correspond au début d'une chaîne.
Vous pouvez vérifier la référence MYSQL sur REGEXP
ici pour plus d’informations.
Notez que ce sont les valeurs possibles du paramètre meta compare
:
'=', '!=', '>', '>=', '<', '<=',
'LIKE', 'NOT LIKE','IN', 'NOT IN',
'BETWEEN', 'NOT BETWEEN', 'NOT EXISTS',
'REGEXP', 'NOT REGEXP', 'RLIKE'
selon WordPress 3.9.2 source .
De la MYSQL ref :
Name Description
------------------------------------------------------
NOT REGEXP Negation of REGEXP
REGEXP Pattern matching using regular expressions
RLIKE Synonym for REGEXP