Truy vấn người dùng theo số lượng bài viết, sắp xếp từ cao đến thấp, có thể tìm kiếm theo display_name hoặc user_login.
public function get_users_by_post_count( $post_type = 'post', $number = 5, $search = '', $role = 'agent' ) { global $wpdb; $sql = "SELECT {$wpdb->users}.ID, p.post_count FROM {$wpdb->users}"; $sql .= " LEFT JOIN ( SELECT post_author, COUNT(*) AS post_count FROM {$wpdb->posts} WHERE post_type = %s GROUP BY post_author ) p ON {$wpdb->users}.id = p.post_author"; if ( ! empty( $search ) ) { $sql .= " WHERE {$wpdb->users}.display_name LIKE '%" . $search . "%' OR {$wpdb->users}.user_login LIKE '%" . $search . "%'"; } $sql .= " ORDER BY p.post_count DESC"; $users = $wpdb->get_results( $wpdb->prepare( $sql, $post_type ) ); if ( ! empty( $role ) ) { $lists = array(); foreach ( $users as $obj ) { $user = get_user_by( 'id', $obj->ID ); if ( $user instanceof WP_User ) { if ( in_array( $role, $user->roles ) ) { $lists[] = $user; } } } $users = $lists; } if ( HT()->is_positive_number( $number ) ) { $users = array_slice( $users, 0, $number ); } return $users; }
Không có bình luận.
Bạn có thể trở thành người đầu tiên để lại bình luận.