2013-12-21 51 views
0

我按照the official WordPress site上的說明創建了一個頁面,該頁面顯示了我的一個分類法的排序列表。它工作得很好,除非我真的想自然分類如果可能的話,但在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'參數而不是'order'。

'orderby'應該設置爲ID。默認情況下,它是'名稱',它會按字母順序給出結果,而'ID'將按您創建的順序排列。

+0

我確實希望按名稱按字母順序排列結果(自然排序),而不是創建的順序。期望的結果:abc3,abc18,abc103,def22,但是名稱非自然排序:abc103,abc18,abc3,def22。 –

+0

啊我明白了,我會修改我的答案。你遇到這個問題的原因是因爲排序工作的方式。 10低於18,1低於3.它不檢查整個數字。 –