循环查看当前WooCommerce产品类别的子类别

时间:2020-02-29 作者:jamesmonk83

我试图循环浏览当前类别的子类别,但我得到了整个网站所有子类别的列表,包括其他类别中的子类别。

这是我的代码:

  $taxonomy     = \'product_cat\';
  $orderby      = \'name\';  
  $show_count   = 0;      // 1 for yes, 0 for no
  $pad_counts   = 0;      // 1 for yes, 0 for no
  $hierarchical = 1;      // 1 for yes, 0 for no  
  $title        = \'\';  
  $empty        = 0;

  $args = array(
         \'taxonomy\'     => $taxonomy,
         \'orderby\'      => $orderby,
         \'show_count\'   => $show_count,
         \'pad_counts\'   => $pad_counts,
         \'hierarchical\' => $hierarchical,
         \'title_li\'     => $title,
         \'hide_empty\'   => $empty
  );
 $all_categories = get_categories( $args );
 foreach ($all_categories as $cat) {
    if($cat->category_parent == 0) {
        $category_id = $cat->term_id;       

        $args2 = array(
                \'taxonomy\'     => $taxonomy,
                \'child_of\'     => 0,
                \'parent\'       => $category_id,
                \'orderby\'      => $orderby,
                \'show_count\'   => $show_count,
                \'pad_counts\'   => $pad_counts,
                \'hierarchical\' => $hierarchical,
                \'title_li\'     => $title,
                \'hide_empty\'   => $empty
        );
        $sub_cats = get_categories( $args2 );
        if($sub_cats) {
            foreach($sub_cats as $sub_category) { 

           echo $sub_category->name ;

            }   
        }
    }       
}
有人知道我错在哪里吗?

提前感谢,

詹姆斯

1 个回复
SO网友:Maulik Parmar

您需要首先获取根级别的类别,然后在子查询中获取它们的子类别。您的查询将只列出不期望输出的术语。

首先获取父项,然后获取其子项并分别处理它们。

只需使用内置wordpress函数get\\u terms(),将分类法作为product\\u cat传递,并将父项作为所需的产品类别id传递。这将返回给定父产品类别的子类别。

有像get\\u the\\u term\\u list()、\\u terms()这样的函数可以帮助您格式化这些术语。

对于多个深度,您可以定义函数并递归执行。

相关推荐