Fortgeschrittene WP_Query mit meta_query, orderby?

Ich frage mich, ob mir jemand mit dieser kleinen komplexen Frage mit ACF helfen kann.

Ich habe bisher folgendes was angezeigt werden soll:

  • Seiten,

  • Zeitungsartikel,

  • Über Artikel und

  • Beteiligte Artikel.

  • Zeigen: nur 4.

Nur anzeigen wenn: ACF / Meta Key ‘home_page’ ist ‘yes’ ausgewählt

UND

Ordnung durch den numerischen Wert des ACF / Meta Schlüssels ‘home_order’ i / e 1,2,3 erster, zweiter, dritter usw

$args = array( 'post_type' => array( 'page', 'news-articles', 'about-articles','involved-articles' ), 'showposts' => 4, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'home_page', 'value' => 'yes', 'compare' => 'IN', ), array( 'orderby' => 'meta_value_num', 'meta_key' => 'home_order', ), ), ); 

Ich denke, mit dem “Vergleich” und der “Beziehung” läuft etwas schief

Solutions Collecting From Web of "Fortgeschrittene WP_Query mit meta_query, orderby?"

Sie sollten wirklich die Dokumentation zu meta_query lesen

Hier ist, was in einer meta_query erlaubt ist

  • Schlüssel (Zeichenfolge) – Benutzerdefinierter Feldschlüssel.

  • value (string | array) – Benutzerdefinierter Feldwert. Es kann nur ein Array sein, wenn Vergleich 'IN' , 'NOT IN' , 'BETWEEN' oder 'NOT BETWEEN' . Sie müssen keinen Wert angeben, wenn 'NOT EXISTS' Vergleiche 'EXISTS' oder 'NOT EXISTS' in WordPress 3.9 und 'NOT EXISTS' .

    (Hinweis: Aufgrund des Fehlers # 23268 ist ein Wert erforderlich, damit NOT EXISTS Vergleiche vor 3.9 korrekt funktionieren. Sie müssen eine Zeichenfolge für den Wertparameter angeben. Eine leere Zeichenfolge oder NULL funktioniert NICHT. Jede andere Zeichenfolge führt jedoch die Trick und wird NICHT in Ihrem SQL NOT EXISTS wenn Sie NOT EXISTS . Brauchen Sie Inspiration? Wie wäre es mit ‘Fehler # 23268’.)

  • compare (string) – Zu testender Operator. Mögliche Werte sind '=' , '!=' , '>' , '>=' , '< ' , '< =' , 'LIKE' , 'NOT LIKE' , 'IN' , 'NOT IN' , 'BETWEEN' , 'NOT BETWEEN' , 'EXISTS' und 'NOT EXISTS' . Standardwert ist '=' .

  • type (string) - Benutzerdefinierter Feldtyp. Mögliche Werte sind 'NUMERIC' , 'BINARY' , 'CHAR' , 'DATE' , 'DATETIME' , 'DECIMAL' , 'SIGNED' , 'TIME' , 'UNSIGNED' . Der Standardwert ist 'CHAR' .

Ihre Bestellung muss außerhalb Ihrer meta_query . Sie können Folgendes versuchen

 $args = [ 'post_type' => ['page', 'news-articles', 'about-articles', 'involved-articles'], 'posts_per_page' => 4, 'meta_key' => 'home_order', 'orderby' => 'meta_value_num', 'meta_query' => [ [ 'key' => 'home_page', 'value' => 'yes', ] ], ]; 

Zusätzliche Bemerkungen:

  • Ab PHP 5.4 können Sie kurze Arraysyntax verwenden, dh Sie können [] anstelle von array() . Wenn Sie noch eine Version vor PHP 5.6 ausführen, sollten Sie ernsthaft über ein Upgrade nachdenken.

  • showposts wird zugunsten von posts_per_page . Verwenden posts_per_page stattdessen posts_per_page

 $args = array( 'posts_per_page' => 4, 'post_type' => array( 'page', 'news-articles', 'about-gorilla','involved' ), 'orderby' => 'meta_value_num', 'meta_key' => 'home_order', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'home_page', 'value' => 'yes', 'compare' => '=', ), ), );