Ich habe zwei erweiterte benutzerdefinierte Felder, Fußnote und date_edited (ein Datepicker-Feld). Was ich erreichen möchte, ist eine wp_query auszuführen, in der die Fußnote nicht leer ist. Die Ausgabe möchte ich basierend auf date_edited sortiert haben .
Ich habe mehrere Lösungen ausprobiert, ohne das lösen zu können.
Das ist mein bester Versuch:
$args = array( 'post_type' => 'page', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'footnote', 'value' => array(''), 'compare' => 'NOT LIKE' ), array( 'key' => 'date_edited', 'value' => array(''), 'type' => 'DATE', 'compare' => '=' 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ), 'post_status' => 'publish', 'posts_per_page' => 10, 'no_found_rows' => true );
Offensichtlich funktioniert das nicht. – Und es ist das date_edited Array, das nicht korrekt ist. Sieht jemand meine Fehler und hat eine korrekte Lösung zu zeigen?
EDIT nachdem @majick geantwortet hat
Das funktioniert. Und ist eine kleine Modifikation von @ Majicks Vorschlag:
$args = array( 'post_type' => 'page', 'meta_query' => array( array( 'key' => 'footnote', 'compare' => 'EXISTS', ), ), 'post_status' => 'publish', 'posts_per_page' => 10, 'no_found_rows' => true, 'orderby' => 'meta_value_num', 'meta_key' => 'date_edited', 'order' => 'DESC' );
Sie verwirren nur die Array-Ebenen, die Sortierung erfolgt nicht innerhalb der Meta-Abfrage-Ebene, sondern auf der Haupt-Abfrageebene. Es ist der Unterschied zwischen zwei classn:
https://codex.wordpress.org/Class_Reference/WP_Query https://codex.wordpress.org/Class_Reference/WP_Meta_Query
Wie der Meta-Query-Codex sagt: “Ein benutzerdefinierter Feldwert kann nur ein Array sein, wenn Vergleich ‘IN’, ‘NICHT IN’, ‘BETWEEN’ oder ‘NICHT ZWISCHEN'” ist … Ich denke, du brauchst wirklich NICHTS EQUALS hier, um zu überprüfen, ob der Fußnotenwert gesetzt ist … Ich glaube nicht, dass Sie überprüfen müssen, ob date_edited existiert, so dass Sie eine viel einfachere Abfrage haben:
$args = array( 'post_type' => 'page', 'meta_query' => array( 'key' => 'footnote', 'value' => '', 'compare' => 'NOT EQUALS' ), 'post_status' => 'publish', 'posts_per_page' => 10, 'no_found_rows' => true, 'orderby' => 'meta_value_num', 'meta_key' => 'date_edited', 'order' => 'DESC' );
Hoffe das hilft … und dass dein Fieber gebrochen ist? 🙂