Заказ по пользовательскому атрибуту поля

Я пытаюсь получить вывод этого типа сообщения для заказа по имени персонала в алфавитном порядке, и я не могу понять, должен ли он находиться в начале array() или если я делал что-то в цикле foreach() ,

Вот мой сконструированный цикл:

  <?php $mypost = array('post_type' => 'staff', 'posts_per_page' => 20, 'orderby' => 'staff-name', 'order' => 'ASC' ); $loop = new WP_Query( $mypost ); ?> <ul> <?php while ( $loop->have_posts() ) : $loop->the_post();?> <?php $items = get_post_meta( $post->ID, 'elements', true ); foreach( $items as $i){ echo'<li> <a href=" '. get_permalink() .' ">' . $i['staff-name'] . '</a> </li> '; } ?> <?php endwhile; wp_reset_query(); ?> 

В поле «Имя пользователя» указано имя и фамилия сотрудника, но по какой-то причине это не похоже на то, что он сортирует их по алфавиту правильно.

Я замечаю, что если я изменю его с ASC на DESC он изменит порядок вывода, но он не в алфавитном порядке. Это почти похоже на то, что он игнорирует имя staff-name на местах и ​​заказывает его вместо идентификатора сообщения.

Вы должны добавить:

 'meta_key' => 'key_name' 

в массив аргументов, чтобы использовать ключ с параметром orderby . Кроме того, вы должны иметь параметр orderby следующим образом:

 'orderby' => 'meta_value' 

Но если у вас есть данные, которые вы хотите сортировать, сохраненные в массиве, как и ваш код, у вас есть проблема. Вы не сможете использовать его для сортировки, посмотрите на ответ на этот вопрос WP_Query meta_query с помощью ключа массива для объяснения.

Если ваш meta_key является «staff-name», вам не нужно 'orderby' => 'staff-name' , вы хотите 'orderby=>'meta_value'

 $mypost = array( 'post_type' => 'staff', 'posts_per_page' => 20, 'meta_key' => 'staff-name', 'orderby' => 'meta_value', 'order' => 'ASC' ); 

В этом суть дублирующего вопроса и объясняется также в Кодексе .