Benutzerdefinierte query_posts () Parameter
-
16-10-2019 - |
Frage
Ich füge einem Thema Abstimmungsfunktionen hinzu. Besucher können Beiträge nach oben oder unten wählen. Ich habe eine Tabelle erstellt, um die Anzahl von Stimmen für jeden Beitrag zu speichern, und das funktioniert einwandfrei. Jetzt versuche ich, Beiträge nach ihren Stimmen zu sortieren.
Ich habe "gewählt" und "abgestimmt" Links. Zum Beispiel, wenn Sie auf "Wählen" auf einen neuen Parameter klicken sort=up
wird in der URL weitergegeben.
In der Schleife, wenn der Parameter vorhanden ist und IS = "Up", möchte ich Beiträge mit Stimmen aufnehmen.
wpdb->get_results("SELECT post_id, FROM $wpdb->votes WHERE up > 5");
Hier möchte ich so etwas verwenden query_posts('sort=up')
vor der Schleife. Meine Frage ist, wie ich den benutzerdefinierten "Sortier" -Parameter erstelle?
Lösung
Wenn Sie Ihre Daten in einer separaten Tabelle haben, ist dies etwas unordentlich. Grundsätzlich müssen Sie filtern posts_where
und posts_join
So ändern Sie die RAW -SQL -Abfrage, damit Ihre benutzerdefinierte Tabelle mit Ihren benutzerdefinierten Werten verbunden und überprüft wird.
Gemäß [schneller :)] Anus Vorschlag wäre sinnvoll, Werte in zu speichern Benutzerdefinierte Felder und verwenden Benutzerdefinierte Feldparameter (Bezogen auf Ordenby, aber nicht dasselbe) in der Abfrage.
Andere Tipps
Ich bin mir ziemlich sicher, dass die einzige Möglichkeit, dies mit dem zu tun orderby
Der Parameter besteht darin, die Stimmenwerte in einem benutzerdefinierten Feld zu speichern.
Aus dem Codex (http://codex.wordpress.org/function_reference/query_posts#ordby_parameters)
OrderBy -Parameter
orderby=meta_value Note: A meta_key=keyname must also be present in the query. Note also that the sorting will be alphabetical
orderby=meta_value_num - Order by numeric meta value (available with Version 2.8)