2013-12-21 5 views
0

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

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

$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" 
} 

ответ

0

Вы должны изменить «OrderBy» аргумент, а не «порядок».

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

+0

Мне нужны результаты в алфавитном порядке по имени (отсортировано естественно), а не в созданном порядке. Желаемый результат: abc3, abc18, abc103, def22, но имена сортируются неестественно: abc103, abc18, abc3, def22. –

+0

А я вижу, я изменю свой ответ. Причина, по которой у вас возникает эта проблема, связана с тем, как работает сортировка. 10 ниже 18, а 1 меньше 3. Это не проверка всего числа. –

Смежные вопросы