Frage

Ich versuche, eine bedingte Logik zu verwenden, um benutzerdefinierte Felder in meiner Abfrage zu vergleichen, aber ein bisschen festgefahren. Wie würde ich alle Beiträge mit veröffentlichtemProject und PermanentArtist auf 'true' bekommen?

Hier ist, was ich bisher habe, ich gehe davon aus, dass es etwas mit "Vergleichen" zu tun hat:

Vielen Dank

OSU

BEARBEITEN: Um zu klären, was ich tun möchte - ich versuche Seiten auszuschließen, die zwei benutzerdefinierte Feldwerte (in diesem Fall veröffentlicht und permanentArtist) auf "False" festgelegt haben. Diese werden über Kontrollkästchen eingestellt, die mit der Plugin -benutzerdefinierten Feldvorlage generiert werden.

Ich habe den Code aktualisiert, um zu veranschaulichen, dass ich alle Seiten mit diesen beiden benutzerdefinierten Feldern filtern muss, die auf false festgelegt sind:

global $post;
$artist_args = array(
    'post_type' => 'page',
    'post_parent' => $post->ID,
    'posts_per_page' => -1,
    'orderby' => 'name',
    'order' => 'ASC',
    'meta_query' => array(
        array(
            'key' => 'ReleasedProject',
            'value' => 'false'
        ),
        array(
            'key' => 'PermanentArtist',
            'value' => 'false'
        )
    )
);
$my_query = new WP_Query($artist_args);
War es hilfreich?

Lösung

Wenn Sie alle Beiträge haben möchten, die haben ReleasedProject UND PermanentArtist Beide auf wahr eingestellt, müssen Sie die ändern value Schlüssel für beide zu diesen zu 'true'. Wenn Sie alle Beiträge ausschließen möchten, auf die beide festgelegt sind 'false', Sie müssen hinzufügen 'compare' => '!=' zu beiden Meta -Query -Arrays.

BEARBEITEN

Die Logik hinter Meta -Abfragen ist so, dass alle Bedingungen erfüllt sein müssen (es ist ein AND Beziehung). Also, wenn du sagst

'meta_query' => array(
    array(
        'key' => 'ReleasedProject',
        'value' => 'false'
    ),
    array(
        'key' => 'PermanentArtist',
        'value' => 'false'
    )
)

Das bedeutet "Finden Sie alle Beiträge, die beide das Projekt identisch veröffentlicht haben 'false' Und ständiger Künstler identisch mit 'false'. "Wenn Sie das hinzufügen würden 'compare' => '!=' Aussage Wie ich bereits erwähnt habe, würde es sagen: "Finden Sie alle Beiträge, die beide Projekte nicht identisch veröffentlicht haben 'false' Und ständiger Künstler nicht identisch mit 'false'. "Wenn Sie einen Beitrag haben, der ein Projekt veröffentlicht hat, auf das eingestellt wurde 'false' und ständiger Künstler auf 'true', Es wird in keiner dieser Fragen auftauchen.

Wenn ein Meta -Wert fehlt, wird auch in den Ergebnissen nicht angezeigt. Wenn Sie also einen Beitrag mit veröffentlichtem Projekt haben, der auf True gesetzt ist, und dauerhafter Künstler überhaupt nicht festgelegt wird, wird diese Meta -Abfrage diesen Beitrag nicht finden:

'meta_query' => array(
    array(
        'key' => 'ReleasedProject',
        'value' => 'false',
        'compare' => '!='
    ),
    array(
        'key' => 'PermanentArtist',
        'value' => 'false'
        'compare' => '!='
    )
)

Grundsätzlich machen Meta -Abfragen entweder/oder "Schecks, sie machen beide/" und "überprüft, wenn Sie mehrere Meta -Abfragen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top