Abfrage Reihenfolge nach Autor

Ich versuche, nach dem Autorennamen zu sortieren, wenn Sie auf den Author-Pfeil in einer Liste der Tickets klicken. Wenn Sie auf den Pfeil klicken, ordnen sich die Namen nach etwas an, das ich nicht identifizieren kann. Ich möchte, dass sie nach dem tatsächlichen Namen und nicht nach der ID-Nummer für den Benutzer sortieren.

Wie bekomme ich den Auftrag, nach dem “netten Namen” des Benutzers (Autors) abzufragen?

public function add_support_ticket_author_query( $query ) { if ( $query->is_main_query() && ( $orderby = $query->get( 'orderby' ) ) ) { switch( $orderby ) { case 'author': $query->set( 'orderby', 'author' ); break; } } } 

Solutions Collecting From Web of "Abfrage Reihenfolge nach Autor"

Versuchen Sie es mit einer der WP User Query Order By Parameters

  'orderby' => 'nicename', 

Um von den Autoren bestellt zu werden, wird Nicename nicht von der WP_Query . Wenn Sie nach Autor bestellen, bestellen Sie, wie Sie erfahren haben, nach der ID des Autors.

Also müssten Sie tatsächlich in die SQL-Klauseln gehen und dies selbst verwalten.

Dies ist ein schneller und schmutziger Hack, um dies zu tun:

 < ?php add_action( 'pre_get_posts', function( $query ) { if ( ! $query->is_main_query() || 'author' !== $query->get( 'orderby' ) ) { return; } add_filter( 'posts_clauses', '177581_add_nicename_orderby', 10, 2 ); } ); function 177581_add_nicename_orderby( $clauses, $query ) { global $wpdb; $clauses['join'] = 'LEFT JOIN ' . $wpdb->users . ' AS author ON ( ' . $wpdb->posts . '.post_author = author.ID)'; $clauses['orderby'] = 'author.user_nicename ' . $query->get( 'order' ); return $clauses; } 

Was wir tun müssen: Im ersten Schritt prüfen wir, ob wir nach Autor bestellen wollen, was wir gleich behandeln, um nach seinem Namen zu sortieren. Wenn dies der Fall ist, haken wir uns in den posts_clauses , wo wir die SQL-statementen ändern können.

Wir müssen

  1. Verknüpfen Sie die Benutzertabelle, da wir den Namen in dieser Tabelle finden.
  2. Ändern Sie unseren Auftrag entsprechend.