Benutzerdefinierte Abfrage, die mehrere benutzerdefinierte Felder betrachtet und sie richtig sortiert

In den letzten zwei Wochen habe ich nach einer Möglichkeit gesucht, eine Abfrage in WordPress zu erstellen, die alle benutzerdefinierten Post-Typen zurückgibt, bei denen ein Meta-Schlüssel “mytype-expired” NICHT auf “yes” gesetzt ist und dann die Ergebnisse nach einem zweiten Meta-Schlüssel sortiert “mytype-sort-order” mit dem höchsten Zahlenwert zuerst. Wenn im Feld “mytype-sort-order” meta_key kein Wert vorhanden ist, möchte ich, dass diese Posts nach Datum sortiert angezeigt werden (zuletzt zuerst hinzugefügt), und alle diese Posts sollten unter Posts liegen, die einen Wert haben.

Zum Beispiel diese Testposten :

Post 1 (ab 1. Juli, mytype-Sortierreihenfolge nicht gesetzt), Post 2 (ab 2. Juli, mytype-Sortierreihenfolge nicht gesetzt), Post 3 (ab 3. Juli, mytype-Sortierreihenfolge nicht gesetzt) , Post 4 (vom 4. Juli, mytype-Sortierreihenfolgewert = 95), Post 5 (vom 5. Juli, Mytype-Sortierreihenfolgewert = 90), Post 6 (vom 6. Juli, mytype-Sortierreihenfolgewert nicht gesetzt ), Post 7 (ab 7. Juli, abgelaufen = “ja”).

sollte wie folgt zurückgegeben werden :

  1. Post 4 (vom 4. Juli, mytype-Sortierreihenfolgenwert = 95)
  2. Post 5 (ab 5. Juli, mytype-Sortierreihenfolge = 90)
  3. Post 6 (ab 6. Juli, Mytype-Sortierreihenfolge nicht gesetzt)
  4. Post 3 (ab 3. Juli, mytype-Sortierreihenfolge nicht gesetzt)
  5. Post 2 (ab 2. Juli, mytype-Sortierreihenfolge nicht gesetzt)
  6. Post 1 (ab dem 1. Juli, mytype-Sortierreihenfolge nicht gesetzt)

( Post 7 wird nicht angezeigt, weil es abgelaufen ist)

Ich erklärte meinen derzeitigen Ansatz, Meta-Query hier zu verwenden, aber ich fand nichts Neues oder machte Fortschritte, und ohne Antworten auf meine erste Frage frage ich mich, ob es noch eine andere Möglichkeit gibt, dies zu erreichen. Ich konnte abgelaufene Beiträge nicht zurückgeben und nach “mytype-sort-order” meta_value_num OR order by date bestellen. Das Problem, auf das ich immer wieder stoße, ist, dass ich nicht nach BOTH “mytype-sort-order” meta_value_num AND date bestellen kann. Obwohl ich viel mit WordPress gemacht habe, sind meine Erfahrungen mit benutzerdefinierten Abfragen begrenzt. Ich bin total fest und würde wirklich einige Ideen zu schätzen wissen. Vielen Dank!

Solutions Collecting From Web of "Benutzerdefinierte Abfrage, die mehrere benutzerdefinierte Felder betrachtet und sie richtig sortiert"

Obwohl es einige Optimierungen erfordern könnte, können Sie den Parameter ‘orderby’ für mehrere Werte verwenden.

Die Schwierigkeit liegt hier eher in der Logik, zum Beispiel der 3. Juli (Datumswert) und die Zahl 10 (Metawert) stehen nicht wirklich miteinander in Beziehung, dies würde Probleme verursachen, wenn sie nicht korrekt formatiert wären.

Am besten ist es, das Datum in ein Format zu konvertieren, das mit Ihren Meta – Werten arbeitet. Verwenden Sie dazu das eingebaute WordPress – Datumsformat, ein PHP – Datumsformat (höchstwahrscheinlich einen Unix – Zeitstempel oder Zeitstempel) oder fügen Sie einen festen Satz von Werten hinzu Datum für Bestellzwecke.

Mehrfachbestellungvon Beispiel. Dies ist nicht intuitiv, Sie müssen genau hinsehen, da zwei Werte durch ein Leerzeichen getrennt sind, “title” UND “menu_order”:

$query = new WP_Query( array( 'post_type' => 'page', 'orderby' => 'title menu_order', 'order' => 'ASC' ) ); 

Datumsreferenz:
http://www.php.net/manual/de/datetime.formats.php
http://www.php.net/manual/en/function.strtotime.php
http://codex.wordpress.org/Function_Reference/the_date

Abfrage: http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

Etwas wie dieses Code-Snippet wird dir helfen

 $args = array( 'post_type' => 'product', 'orderby' => 'meta_value', 'meta_key' => 'mytype-sort-order', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'mytype-expired', 'value' => 'yes', 'compare' => '!=' ) ) ); $query = new WP_Query( $args );