如何按ID订购子类别列表

时间:2014-05-20 15:42:01

标签: php wordpress

我有这部分代码:

<?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=");
    }

?>

如果它们存在,它会显示我的分类和子类别。现在我需要订购子类别列表。

我所看到的:

  • CAT1
  • CAT2
  • 的Cat3
    • CAT1
    • CAT6
    • CAT5
    • CAT3
  • 3,4,5

但我需要按ID订购我的子类别。

1 个答案:

答案 0 :(得分: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");
    }

?>

我稍微重构了你的网址。我删除了title_li参数,因为您没有传递参数。此外,由于您使用双引号"来包装字符串,因此您可以直接在字符串中使用该变量而无需连接。

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

根据评论进行更新

仅使用wp_list_categories()功能无法仅对子类别进行排序。您需要定义custom walker以仅对子类别进行排序,或者您可以尝试使用插件来更改对类别进行排序的方式。

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