web-dev-qa-db-de.com

Durchsuchen Sie mehrere benutzerdefinierte Felder mit meta_query

Ich versuche, eine Suchergebnisliste für einen benutzerdefinierten Beitragstyp zu erstellen. Das Problem besteht darin, wie der Parameter 'meta_query' die übergebenen Werte miteinander verknüpft. Es scheint, als würde jeder 'meta_query'-Wert als' AND 'und nicht als' OR 'behandelt. Hier ist der Code, den ich benutze:

$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);

Wenn ich eines der Felder einzeln durchsuche, erhalte ich die gewünschten Ergebnisse. Wenn ich sie zusammen verwende, wird sie nicht gefunden, da die gesuchte Zeichenfolge möglicherweise nur in einem der drei unten aufgeführten Felder vorkommt. Gibt es eine Möglichkeit, 'meta_query' zu veranlassen, jeden der übergebenen Feldvergleiche als 'OR' zu behandeln?

4
hereswhatidid

Ja, seit WP 3.2 können Sie das Argument 'relation' setzen:

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

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

7
scribu