WordPress – meta_query – Möglichkeit, mehrere oder verschachtelte meta_query-Argumente zu verwenden?

Lesezeit: 2 Minuten

Ich verwende meta_query von WordPress, um zu versuchen, ein grundlegendes Ereignissystem zu erstellen.

Jedes Ereignis hat eine Reihe von Meta-Schlüsseln/-Werten. Zum Beispiel:

Start Date
End Date
Ongoing (Yes/No)

Ich möchte laufende Ereignisse (laufend = Ja) und nicht laufende Ereignisse (laufend = Nein) trennen.

Dann möchte ich innerhalb meiner laufenden Ereignisse folgende Ereignisse trennen:

  1. Beginn innerhalb von zwei Wochen ODER Ende innerhalb von zwei Wochen
  2. Bereits begonnen UND endet nach zwei Wochen

Mein Problem liegt in Fall 1 das heißt im wesentlichen:

(Start Date <= Two Weeks OR End Date <= Two Weeks) AND Ongoing == YES

Mit WP_Query habe ich Folgendes:

$ongoingSoon = array(
        'category_name' => 'event',
        'meta_key' => 'End Date',
        'orderby' => 'meta_value',
        'order' => 'ASC',
        'meta_query' => array(
            'relation' => 'AND',
            array(
                'key' => 'Start Date',
                'value' => $today,
                'compare' => '>='
            ),
            array(
                'key' => 'End Date',
                'value' => $nexttwoweeks,
                'compare' => '<='
            ),
            array(
                'key' => 'Ongoing',
                'value' => 'Yes'
            )
        )
    );

Was nur zurückkehrt Laufend Ereignisse, die beginnen UND AUCH Ende innerhalb der nächsten zwei Wochen. Ändere ich die Beziehung zu ODER, dann zeigt es auch Ereignisse an, die nicht im Gange sind. Gibt es eine Möglichkeit, das zu erreichen, was ich brauche?

Da meta_query derzeit geschrieben wird, bin ich mir zu 99% sicher, dass dies unmöglich ist.

Was du kann Um dies zu umgehen, erstellen Sie eine (wahrscheinlich private) benutzerdefinierte Taxonomie für Ongoing, die sich wie ein boolescher Wert verhält und immer nur einen Begriff verwendet (‘ja’ oder ‘1’ oder was auch immer). Ihre WP_Query würde dann so geändert werden, dass sie folgendermaßen aussieht:

$ongoingSoon = array(
    'category_name' => 'event',
    'meta_key' => 'End Date',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'Start Date',
            'value' => $today,
            'compare' => '>='
        ),
        array(
            'key' => 'End Date',
            'value' => $nexttwoweeks,
            'compare' => '<='
        )
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'ongoing',
            'field' => 'slug',
            'terms' => 'yes'
        )
    )
);

1216020cookie-checkWordPress – meta_query – Möglichkeit, mehrere oder verschachtelte meta_query-Argumente zu verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy