2013-12-21 1 views
0

나는 the official WordPress site에있는 지침에 따라 분류 목록 중 정렬 된 목록을 보여주는 페이지를 만들었습니다. 가능하다면 Natural Sorting을 사용하고 싶다는 점을 제외하고는 정상적으로 작동하지만 wp_list_categories 함수에서 "order"인수에 대한 유일한 유효한 옵션은 "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보다 낮습니다. 전체 숫자를 확인하지 않았습니다. –