it-swarm.com.de

Meta Query mit AND & OR?

Ich versuche, nach einigen Posts in WP_Query zu filtern, aber ich scheine nicht den richtigen Zustand zu erreichen. Grundsätzlich möchte ich Posts mit dem benutzerdefinierten Feld event_data (sortiert nach diesem Feld) abrufen und unter diesen Posts nur diejenigen auswählen, die eines dieser anderen Felder in event_doc1, event_doc2, event_doc3, main_doc ausgefüllt haben.

Der Code ist unten.

$metaCondition = array(
            'relation' => 'OR',
            array(
                'key' => 'main_doc',
                'value' => 0,
                'compare' => '!=',
                'type' => 'NUMBER'
            ),
            array(
                'key' => 'event_doc1',
                'value' => 0,
                'compare' => '!=',
                'type' => 'NUMBER'
            ),
            array(
                'key' => 'event_doc2',
                'value' => 0,
                'compare' => '!=',
                'type' => 'NUMBER'
            ),
            array(
                'key' => 'event_doc3',
                'value' => 0,
                'compare' => '!=',
                'type' => 'NUMBER'
            )
        );

        $query = array(
            'numberposts' => 4, 
            'orderby' => 'meta_value',
            'meta_key' => 'event_data', 
            'order' => 'ASC', 
            'meta_query' => $metaCondition
        );

Vielen Dank im Voraus an alle!

5
Olsi

Entschuldigung, funktioniert nicht so. Die "einfachen" Metaparameter werden als Ganzes in einen Teil der meta_query konvertiert. Es ist also keine separate Sache, und Ihre OR Beziehung gilt auch für sie.

Ihre Abfrage ist daher mit dem normalen Abfragesystem nicht möglich, da Sie UNDs mit ODERs mischen möchten (Sie möchten Elemente, zwischen denen event_data UND-verknüpft ist, mit einer Reihe anderer Elemente, zwischen denen sich ODERs befinden).

Sie müssen entweder auf benutzerdefiniertes SQL zurückgreifen oder Ihr Design überdenken.

7
Otto