Intereting Posts
Выберите событие, в котором дата начала меньше текущей даты, а дата окончания больше текущей даты Как узнать, использует ли мой сайт файл xmlrpc.php? Импорт WordPress. xml-файл при новой установке Gravity Forms отправит только электронную почту от администратора Назначить таксономию на основе пользовательского значения поля регистрировать несколько типов сообщений в одной записи меню После миграции веб-сайт работает очень медленно Как запрашивать сообщения от определенных авторов и категорий с помощью WP_query? wordpress не создает потоки для видео mp4 Как изменить заголовок и нижний колонтитул на полную ширину? API настроек – одновременное сохранение нескольких вкладок Вставить нового пользователя в форму submit 'init' hook Как исправить эту вставку? Не работай для меня! Разная структура / содержание сообщений из настраиваемого типа сообщений Запросить сообщения в предопределенном порядке

Заказ по первому названию

Я пытаюсь заказать список участников с помощью display_name или имени ASC. http://sim.is/sim/felagatal-sim/

Кажется, это не работает. Есть ли указатели? : /

$users = get_users(array( 'role' => 'sm_flagar', 'orderby' => 'display_name', 'order' => 'ASC', )); foreach ($users as $user) { $firstName = get_user_meta($user->ID, 'first_name', true); $lastName = get_user_meta($user->ID, 'last_name', true); echo '<li><a href="' . $user->user_url . '">' . $firstName . ' ' . $lastName . '</a></li>' . PHP_EOL; } 

Solutions Collecting From Web of "Заказ по первому названию"

Вот мое решение

 function split_names( $name ) { $names = explode( " ", trim( join( " ", $name ) ) ); $first_name = array_shift( $names ); $last_name = array_pop( $names ); $middle_name = join( " ", $names ); return array( "first_name" => $first_name, "middle_name" => $middle_name, "last_name" => $last_name ); } function sort_by_full_name( $arr1, $arr2 ) { $arr1 = split_names( $arr1 ); $arr2 = split_names( $arr2 ); $retval = strcoll( $arr1['first_name'], $arr2['first_name'] ); if ( ! $retval ) $retval = strcoll( $arr1['last_name'], $arr2['last_name'] ); if ( ! $retval ) $retval = strcoll( $arr1['middle_name'], $arr2['middle_name'] ); return $retval; } $users = get_users( array( 'role' => 'sm_flagar', 'orderby' => 'display_name', 'order' => 'ASC' ) ); $user_list = array(); foreach ( $users as $user ) { $firstName = get_user_meta( $user->ID, 'first_name', true ); $lastName = get_user_meta( $user->ID, 'last_name', true ); $user_list[] = split_names( array( "first_name" => $firstName, "last_name" => $lastName, "url" => $user->user_url ) ); } usort( $user_list, 'sort_by_full_name' ); setlocale( LC_COLLATE, $locale ); $locale = setlocale( LC_COLLATE, 'is_IS.utf8' ); foreach ( $user_list as $user ) { echo '<li><a href="' . $user["url"] . '">' . $user["first_name"] . ' ' . $user["middle_name"] $user["last_name"] . '</a></li>' . PHP_EOL; } 

Исходный код не так уж плох. В нем просто отсутствует параметр meta_key . Пример:

 $theusers = get_users( array( 'role' => 'contributor', 'meta_key' => 'first_name', 'orderby' => 'meta_value', ) ); 

В настоящее время вы можете сделать что-то вроде этого, пока вы пытаетесь сортировать по умолчанию по умолчанию WP usermeta:

 $users = get_users(array( 'fields' => 'all_with_meta' // Add whatever arguments you need )); // Sort by first name, ascending usort($users, create_function('$a, $b', 'if($a->first_name == $b->first_name) { return 0;} return ($a->first_name > $b->first_name) ? 1 : -1;')); 

remove ',' (без кавычек) после «ASC». Это будет трюк.

 $users = get_users(array( 'role' => 'sm_flagar', 'orderby' => 'display_name', 'order' => 'ASC' )); foreach ($users as $user) { $firstName = get_user_meta($user->ID, 'first_name', true); $lastName = get_user_meta($user->ID, 'last_name', true); echo '<li><a href="' . $user->user_url . '">' . $firstName . ' ' . $lastName . '</a></li>' . PHP_EOL; } 

Он работает так, как его просят. Если вы выберете отображаемое имя каждого пользователя в цикле, тогда вы поймете, что происходит.

замените строку «эхо» на:

 echo '<li><a href="' . $user->user_url . '">' . $firstName . ' ' . $lastName . '</a>' . $user->display_name . '</li>' . PHP_EOL; 

Он не упорядочивает по имени и фамилии, а по «отображаемому имени».

Чтобы получить всех пользователей, упорядоченных по имени, установите meta_key и meta_value .

 $users = get_users( array( 'role' => 'director', 'meta_key' => 'first_name', 'orderby' => 'meta_value', 'order' => 'ASC' ) ); 

EDIT : Это, похоже, работает и ДОЛЖНО работать. Я считаю, что он будет работать в следующей версии. Но пока это не работает.

Выбранный ответ здесь – лучший вариант, который я нашел до этого времени: заказ пользователей определенной роли по фамилии