JOIN SQL для сортировки списка сообщений CPT по disply_name для user_id в postmeta

У меня есть идентификатор пользователя WP, сохраненный в postmeta для пользовательского типа сообщения. Я отображаю столбец идентификатора пользователя как пользовательский контент на странице списков сообщений как имя пользователя display_name.

Как отсортировать этот столбец по имени wp_users.display_name, когда идентификатор пользователя хранится в wp_postmeta.meta_key = "user_id"?

Я пробовал JOIN с CAST и без него, но он не сортируется в любом случае.

add_filter( 'posts_clauses', array( $this, 'post_clauses_orderby' ), 10, 2 ); public function post_clauses_orderby( $clauses, $wp_query ) { global $wpdb; $orderby = $wp_query->query[ 'orderby' ]; if ( 'user' === $orderby ) { $clauses[ 'join' ] .= " LEFT JOIN {$wpdb->users} ON CAST({$wpdb->prefix}postmeta.meta_value AS SIGNED)={$wpdb->users}.ID"; $clauses[ 'orderby' ] = "{$wpdb->users}.display_name "; $clauses[ 'orderby' ] .= ( 'ASC' == strtoupper( $wp_query->get( 'order' ) ) ) ? 'ASC' : 'DESC'; } return $clauses; } 

Может ли кто-нибудь увидеть, что я делаю неправильно?

Solutions Collecting From Web of "JOIN SQL для сортировки списка сообщений CPT по disply_name для user_id в postmeta"