WordPress列表类别下拉列表,其中包含父子关系及其父级下的子级

时间:2020-09-10 作者:xyz83242

我试图显示一个类别下拉列表(选择),其中父类别和子类别标记在子类别下。示例:

parent A
parent B
parent C
- child of C
- child of C
- child of C
parent D
parent E
- child of E
- child of E
parent F
相反,我得到的是:

parent A
parent B
parent C
parent D
parent E
parent F
- child of C
- child of C
- child of C
- child of E
- child of E
以下是我的短代码:

function categories_dropdown() { 
  $args = array(
  \'taxonomy\'          => \'my_custom_taxonomy\',
  \'hide_empty\'        => false,
  \'echo\'              => true,
  \'hierarchical\'  => true,
  \'show_count\'        => false,
  \'orderby\'           => \'parent\', 
);

$categories = get_categories($args);

$select = "<select name=\'cat\' id=\'categories_dropdown\' class=\'postform\'>n";
$select.= "<option value=\'-1\'>Select category</option>n";

foreach($categories as $category){
  if($category->count > 0){
    if($category->parent!=0) {
      $select.= "<option value=\'".$category->slug."\'> - ".$category->name." (". $category->count .")</option>";
    } else {
      $select.= "<option value=\'".$category->slug."\'>".$category->name." (". $category->count .")</option>";
    }
    
  }
}

$select.= "</select>";

return $select;

}
add_shortcode(\'categories-dropdown\', \'categories_dropdown\');
我这里的问题是,哪些参数负责父分类法类别下的子级的正确排序?这是用参数完成的还是我必须对选项下拉列表的显示进行编码的方式?我真的很感谢你抽出时间。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我这里的问题是,哪一个参数对父分类类别下的子类的正确排序负责?

无-orderby arg只对类别进行排序,而不对它们进行分组(将它们放在自己的父类别下),因此需要手动进行分组。

和设置orderbyparent 只会将所有父类别放在顶部,然后是子类别,就像问题中的示例一样。。

但不是手动分组类别

实际上,您可以简单地使用wp_dropdown_categories() 要获取层次结构/显示,请执行以下操作:

$args = array(
    \'taxonomy\'     => \'my_custom_taxonomy\',
    \'hide_empty\'   => false,
    \'echo\'         => false,
    \'hierarchical\' => true,
    \'show_count\'   => true,
    \'orderby\'      => \'parent\',
    \'id\'           => \'categories_dropdown\',
    \'value_field\'  => \'slug\',
);

$select = wp_dropdown_categories( $args );
那会给你一个select 标记/HTML与问题中的标记/HTML相似的菜单。

但是,如果需要添加自定义HTML,如data-xxx 属性到<option> 标记,然后您可以使用自己的自定义walker类(请参见Walker_CategoryDropdown) 或者在我的answer 堆栈溢出时。

相关推荐

Sub Menus will not work

我急需帮助。我尽了我所知的一切努力将我的子菜单恢复到我的网站上。我安装了一个元滑块插件,在我的主页上获得一个滑块。它工作得很好,然后,我的子菜单停止工作!然后我停用了插件,认为这就是导致它的原因,子菜单仍然没有显示在我的网站上。我不确定我是否丢失了代码或什么,但我将非常感谢能得到的任何帮助。我也有海明威的主题,不确定这是否有什么关系。