2014-05-20 53 views
0

订购子目录名单上有这部分代码:如何通过ID

<?php 
    $cat_object = $wp_query->get_queried_object(); 
    $i = $cat_object->term_id; 

    while (true) { 
     $cat = get_category($i); 
     if ($cat->category_parent) { 
      $i = $cat->category_parent; 
     } else { 
      break; 
     } 
    } 
    $parentcat = $i; 
    if (is_category(array(8, 10, 11, 12, 13, 14))) { 
     wp_list_categories("depth=2&child_of=" . $parentcat . "&title_li="); 
    } else { 
     wp_list_categories("depth=1&child_of=" . $parentcat . "&title_li="); 
    } 

?> 

它显示了我的categorys和Subcategorys如果它们存在。现在我需要订购显示子类的列表。

我看到:

  • CAT1
  • CAT2
  • 的Cat3
    • CAT1
    • 六类
    • CAT5
    • CAT3
  • Cat4

但我需要通过ID命令我的子类别。

+0

你尝试使用'orderby = ID'吗? –

+0

是的,它改变了整个分类列表。但我只需要更改子类别。 – DraugDev

回答

0

如果你看一下wp_list_categories()文档他们有一些争论,这将帮助你。即orderorderby参数。试试这个:

<?php 
    $cat_object = $wp_query->get_queried_object(); 
    $i = $cat_object->term_id; 

    while (true) { 
     $cat = get_category($i); 
     if ($cat->category_parent) { 
      $i = $cat->category_parent; 
     } else { 
      break; 
     } 
    } 
    $parentcat = $i; 
    if (is_category(array(8, 10, 11, 12, 13, 14))) { 
     wp_list_categories("depth=2&child_of=$parentcat&orderby=name&order=DESC"); 
    } else { 
     wp_list_categories("depth=1&child_of=$parentcat"); 
    } 

?> 

我重构了一下你的URL。由于您未传递参数,因此我删除了title_li参数。此外,由于您使用双引号"来包装您的字符串,因此您可以直接在字符串中使用该变量,而无需进行连接。

无论如何,你会注意到除了字符串的末尾按字母顺序组织类别。您可以将其更改为许多不同的内容,但您可以在documentation上找到这些内容。

更新基于意见

订购只是子类不能简单地用单独的wp_list_categories()函数来实现。您可能需要定义一个custom walker来对子类别进行排序,或者您可以尝试插件来更改对类别进行排序的方式。

plugin是有点过时,但它仍然有效!确保删除字符串中的参数orderorderby

+0

同样在这里,这种顺序正在改变整个列表,但我只需要订购子类别。 – DraugDev

+0

您有两个正在呈现的列表。我假设代码中的第一个列表是子类别,第二个列表是父类别(此假设基于深度参数)。如果是这种情况,只需从字符串中删除'order'和'orderby'参数。答案已更新。 –

+0

这两次都是同样的列表,如果即时通讯在类别8上显示我的子类别,如果不是 - 不是。如果即时更改订单或订单,它会更改整个列表。我想只改变子类别,如果即时类别8 ..我希望你能理解它,对我的坏英语顺便抱歉。 – DraugDev