it-swarm.com.de

meta_query compare> = funktioniert nicht aber <= funktioniert?

Ich versuche den folgenden Code auszuführen:

$today123 = date('Ymd');
$args123 = array (
        'post_type' => 'myType',
        'meta_query' => array(
            'relation'=>'AND',
            array(
                'key'       => 'date',//this is a custom field, not the std 'date' field of wp
                'compare'   => '>=',
                'value'     => $today123,
            )
        ),
        'posts_per_page' => 10,
        'orderby' => 'meta_value_num',
        'order' => 'ASC' 
);
$variable=new WP_Query($args123);

um meinen benutzerdefinierten Beitragstyp basierend auf einem benutzerdefinierten Feld zu filtern, verwende ich die Abfrage wie vorgesehen in einer Schleife und überprüfe die Ausgabe mit ein paar var_export

die Abfrage ignoriert meine meta_query vollständig (ich habe versucht, die orderby zu löschen, aber auch ohne sie wird die metaquery einfach nicht richtig angewendet).

also habe ich ein wenig mit dem Code und den verschiedenen Ergebnissen in verschiedenen Situationen gemildert und etwas herausgefunden.

wenn verwenden

'compare'   => '>=',

es wird ignoriert und es werden alle Posts zurückgegeben, auch die, die kein haben

'meta_date' >= date('Ymd')

aber wenn ich genau den gleichen Code verwende, setzen

'compare'   => '<=',

magischerweise wird der Filter angewendet und funktioniert so, wie ich erwarten würde, dass der <= Vergleich funktioniert.

Möglicherweise fehlt hier etwas. Ich muss die "myType" -Postings mit dem Wert "meta_date" größer oder gleich "date" ("Ymd") abrufen und nach den "meta_data" in ASC-Reihenfolge sortieren.

Warum funktioniert das Vergleichen von '<=' und Vergleichen von '> =' nicht? Wie kann ich mein gewünschtes Ergebnis erzielen?

BEARBEITEN:

"Witzige" Entdeckung: Wenn ich nicht bestelle und bestelle, vergleiche> = funktioniert ...

1
Yuri Scarbaci

Nach einer vollständigen Untersuchung und viel mehr Debugging und Code-Tempering stellte ich fest, dass die Verwendung von "Datum" als Meta-Feldname eine Menge "Verwirrung" in der WordRPESS-Abfrage selbst hervorruft, da WordPress das Feld "Datum" von meta_query mit dem "Datum" verwechselt "selbst, um all dies zu vermeiden, ändert die lösung einfach den namen des metafelds von date in meta_date, wodurch alle abfragen auf dem feld wie beabsichtigt funktionieren!

2
Yuri Scarbaci