Сортировка списка таксономий WordPress по естественному порядку

Я следовал инструкциям на официальном сайте WordPress, чтобы создать страницу, которая показывает отсортированный список одной из моих таксономий. Это работает просто отлично, за исключением того, что я действительно хотел бы иметь естественную сортировку, если это возможно, но в wp_list_categories функция, единственными допустимыми параметрами для аргумента order являются ASC и DESC.

Я попытался изменить функцию, применяя естественную сортировку к массиву, используя следующее без успеха (возвращает ошибку):

$categories = get_categories( $r ); // this line is part of the original function   
foreach ($categories as $key => $row) {
    $sortNames[$key]  = $row[1]; 
}
array_multisort($sortNames, SORT_NATURAL, $categories);

Вот то, что первый элемент $categories массив выглядит как в дампе (сортирую по "имени"):

array(389) 
{

  [0]=> object(stdClass)#363 (15) 
{

   ["term_id"]=> &string(3) "541"
   ["name"]=> &string(17) "2° Ms. astron. 1"
   ["slug"]=> &string(13) "2-ms-astron-1"
   ["term_group"]=> string(1) "0"
   ["term_taxonomy_id"]=> string(3) "567"
   ["taxonomy"]=> string(13) "manuscript-id"
   ["description"]=> &string(0) ""
   ["parent"]=> &string(3) "540"
   ["count"]=> &int(1)
   ["cat_ID"]=> &string(3) "541"
   ["category_count"]=> &int(1)
   ["category_description"]=> &string(0) ""
   ["cat_name"]=> &string(17) "2° Ms. astron. 1"
   ["category_nicename"]=> &string(13) "2-ms-astron-1"
   ["category_parent"]=> &string(3) "540" 
 }

1 ответ

Вам нужно изменить аргумент orderby, а не order.

'orderby' должен быть установлен на ID. По умолчанию это "имя", которое даст вам результаты в алфавитном порядке, тогда как "ID" будет в том порядке, в котором вы их создали.

Другие вопросы по тегам