按自然顺序排序WordPress分类列表

时间:2013-12-21 05:03:23

标签: php wordpress sorting natural-sort

我按照the official WordPress site上的说明创建了一个页面,其中显示了我的某个分类法的排序列表。它工作得很好,除非我真的希望尽可能使用自然排序,但在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 个答案:

答案 0 :(得分:0)

您需要更改'orderby'参数而不是'order'。

'orderby'应设置为ID。默认情况下,它是'name',它将按字母顺序为您提供结果,而'ID'将按照您创建它们的顺序。