web-dev-qa-db-fra.com

Rechercher dans plusieurs champs personnalisés à l'aide de meta_query

J'essaie de créer une liste de résultats de recherche pour un type d'article personnalisé et le problème que je rencontre est liée à la façon dont le paramètre 'meta_query' enchaîne les valeurs transmises. Il semble que chaque valeur de méta-requête soit traitée comme un "ET" plutôt que comme un "OU". Voici le code que j'utilise:

$strsearch = 'lorem';
$args = array(
    'post_type' => 'products',
    'meta_query' => array(
        array('key' => '_product_make','compare' => 'LIKE','value' => $strsearch),
        array('key' => '_product_model','compare' => 'LIKE','value' => $strsearch)
        )
    ,'s' => $strsearch);
$resource_query = new WP_Query($args);

Lorsque je fouille chacun des champs individuellement, j'obtiens les résultats souhaités. Lorsque je les utilise ensemble, cela s’affiche comme non trouvé, car la chaîne que je cherche ne peut figurer que dans l’un des trois champs énumérés ci-dessous. Existe-t-il un moyen de permettre à 'méta_query' de traiter chacune des comparaisons de champ passées en tant que 'OU'?

4
hereswhatidid

Oui, depuis WP 3.2, vous pouvez définir l'argument 'relation':

'meta_query' => array(
    'relation' => 'OR',
    array('key' => '_product_make','compare' => 'LIKE','value' => $strsearch),
    array('key' => '_product_model','compare' => 'LIKE','value' => $strsearch)
)

Voir http://core.trac.wordpress.org/ticket/17011

7
scribu