Benutzerdefinierte WP_Query-Reihenfolge von post_meta und (author) user_meta

Ich habe ein Problem, das ich bei Google und anderswo nicht finden konnte. Problem in den Kontext stellen. Ich mache eine WordPress-Website, wo Benutzer ihre Tutor Liste für die Bereitstellung eines Tutorials setzen kann, und ich implementiere das System der Bewertung der Tutoren sie selbst und ihr Zuhören. Also habe ich den post-Typ ” tutor_listing ” und jede tutor_listing hat einen ” post_score-Metawert , und jeder Tutor (Benutzer, der seine Tutorials eingibt ) hat einen user_meta- Wert namens ” user_points “.

Also brauche ich eine WP_Query , die von der database alle veröffentlichten tutor_listing bekommt, aber nach ( post_score + user_points ) sortiert . Nur um ‘ post_score ‘ zu betonen , ist ein post_meta der post_type tutor_listing und ‘ user_points ‘ ist user_meta des Autors dieses Posts ( tutor_listing ). Auch ich brauche diesen Wert, um in der Schleife zu zeigen.

Ich kann alle Tutor_listing durch erhalten

$args = array( 'post_type' => 'job_listing', 'post_status' => 'publish' ); $query = new WP_Query( $args ); 

Ich kann das Ergebnis von der benutzerdefinierten WordPress-SQL-Abfrage wie folgt erhalten:

 SELECT p1.ID, p1.post_author, p1.post_title, p1.post_date, (um1.meta_value + pm1.meta_value) AS total_score FROM $wpdb->posts p1 JOIN $wpdb->users u1 ON (p1.post_author = u1.ID) JOIN $wpdb->usermeta um1 ON (um1.user_id = u1.ID) JOIN $wpdb->postmeta pm1 ON (pm1.post_id = p1.ID) WHERE p1.post_type = 'tutor_listing' AND p1.post_status = 'publish' AND um1.meta_key = 'user_points' AND pm1.meta_key = 'post_score'"; 

Kann WP_Query eine solche functionalität bieten? Ich brauche WP_Query, um alle zusätzlichen functionen wie Paginierung ect zu verwenden. Oder gibt es eine Möglichkeit, dass ich das gesamte Ergebnis mit der benutzerdefinierten SQL-statement an das WP_Query-Objekt ausführen könnte?

Vielen Dank

Solutions Collecting From Web of "Benutzerdefinierte WP_Query-Reihenfolge von post_meta und (author) user_meta"

WordPress 4.0 erlaubt Ihnen, mehrere orderby Parameter anzugeben und die Reihenfolge der einzelnen unabhängig voneinander festzulegen.

Wie es geht? Machen Sie einfach mehrere Referenzen, hier ist eine Möglichkeit, das zu tun.

 $args = array( 'orderby' = > array( 'title' => 'ASC', 'date' => 'DESC', ) ); 

Erfahren Sie mehr hier …

Aber erst seit WordPress 4.2 ist es möglich, dies mit Metawerten zu tun. Schaut euch diesen Beitrag an.

Sie können wpdb verwenden und trotzdem Seitenumbruchfunktionen erhalten. Hier ist eine gute Antwort zum Thema:

WordPress Paginieren $ wpdb-> get_results