Intereting Posts
Изменить меню на основе пользовательских пользователей Использование flickr api в пользовательском плагине WordPress Ссылка на все сообщения (включая все категории) Где в функции.php добавить этот код, чтобы отображались уменьшенные изображения? Переопределить индекс с помощью настраиваемой страницы PHP где я могу найти недостающие комментарии на панели инструментов WordPress? Как получить group_id из действия group_join_group в buddypress Получить пользовательские атрибуты Woocommerce (таксономии) Помощь Создание пользовательского типа отправки слайд-шоу с настраиваемыми мета-ящиками? Штрих-код полосы от конкретных типов сообщений (форматов) Как узнать, какой плагин wordpress экспортирует информацию сайта в автора плагина? Как я могу использовать пользовательское имя AccessFileName? какой код добавить в search.php Добавьте ссылку на отдельные продукты в комплекте с продуктом Woocommerce Пользовательские типы сообщений для поддержки плагина Ticket?

Список пользователей в алфавитном порядке с заголовком

Как я могу показать список пользователей с алфавитными заголовками? Например:

Адам
Алан

В
Билл
боб

Я нашел примеры, которые делают это с помощью Posts, но я не могу понять, как заставить его работать с WP_User_query() 🙁

После хорошего возиться я что-то придумал. Это, конечно, не метод BEST, но так как нет никакого способа сделать это через ядро ​​напрямую, не выполняя кучу переупорядочения массива, я думаю, что SQL является лучшим решением здесь. В любом случае, SQL выглядит следующим образом:

 SELECT users.*, meta.meta_value FROM $wpdb->users AS users LEFT JOIN $wpdb->usermeta AS meta ON users.ID = meta.user_id WHERE meta.meta_key = 'first_name' AND meta.meta_value != '' ORDER BY meta.meta_value ASC 

Ничего особенного в этом нет, он просто получает все значения из таблицы пользователей, где есть первое имя.

Для этого списка вы можете просто перебирать эти результаты, это довольно просто сделать. Единственное, что вам нужно сделать, это заставить заголовки работать правильно. Если вы сохраните заголовок, тогда сравните регистр без учета регистра, это должно быть довольно легко. Например (псевдокод):

 $cur_first_letter = substr( $first_name, 0, 1 ); if( strtoupper( $cur_first_letter ) != strtoupper( $prev_first_letter ) ) { // output header for strtoupper( $cur_first_letter ) } $prev_first_letter = $cur_first_letter; 

Примечание. SQL проверен, PHP не является (очевидно, поскольку это псевдокод).

@ m0r7if3r предоставил правильный ответ. Ради того, чтобы предоставить доступный для использования фрагмент кому-либо еще, рассматривая эту проблему, вот что я использовал.

 $wp_users = $wpdb->get_results(" SELECT users.*, meta.meta_value FROM $wpdb->users AS users LEFT JOIN $wpdb->usermeta AS meta ON users.ID = meta.user_id WHERE meta.meta_key = 'first_name' AND meta.meta_value != '' ORDER BY meta.meta_value ASC "); foreach ($wp_users as $wp_user) : $cur_first_letter = substr( $wp_user->meta_value, 0, 1 ); if( strtoupper( $cur_first_letter ) != strtoupper( $prev_first_letter ) ) { echo "<h3 class='alpha-heading'>$cur_first_letter</h3>"; } echo "<li><a href=''>$wp_user->meta_value</a></li>"; $prev_first_letter = $cur_first_letter; endforeach;