Php 如何按ID排序子类别列表
我有这部分代码:Php 如何按ID排序子类别列表,php,wordpress,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;
<?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=");
}
?>
它显示我的类别和子类别(如果存在)。现在我需要对显示的子类别列表进行排序
我看到:
第一类
第二类
第三类
第一类
六类
第五类
第三类
第四类
但是我需要按ID对我的子类别进行排序。如果您查看文档,因为它们有一些参数可以帮助您。即order和orderby参数。试试这个:
<?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参数,因为您没有传递参数。此外,由于使用双引号包装字符串,因此可以直接在字符串中使用变量,而无需连接
无论如何,您会注意到字符串末尾添加了按字母顺序组织类别的内容。您可以将其更改为许多不同的内容,但您可以在上找到这些内容
根据评论更新
仅使用wp_list_categories功能无法实现子类别的排序。您要么需要定义一个仅对子类别进行排序,要么可以尝试一个插件来更改对类别进行排序的方式
这有点过时,但仍然有效!确保删除字符串中的order和orderby参数。是否尝试使用orderby=ID?是的,它会更改整个类别列表。但我只需要更改子类别。同样,这种顺序正在更改整个列表,但我只需要对子类别进行排序。您有两个正在呈现的列表。我假设代码中的第一个列表是子类别,第二个是父类别。此假设基于深度参数。如果是这种情况,只需从字符串中删除order和orderby参数。答案更新。两次都是同一个列表,如果我在第8类,它会显示我的子类别,如果不是-否。如果我更改订单或订单,它会更改整个列表。如果我是第8类的话,我只想更改子类。。我希望你能理解,顺便说一句,对不起我的英语不好。我知道你在做什么。仅使用wp_list_categories功能无法实现这一点。您需要定义一个自定义的walker来对子类别进行排序,或者您可以尝试使用一个插件来更改对类别的排序方式。这有点过时,但仍然有效!确保删除字符串中的order和orderby参数。我将用这些信息更新答案。