在Woocommerce Product Category小部件

时间:2018-01-30 19:28:34

标签: wordpress woocommerce widget categories children

我正在与Woocommerce建立一个商店并使用WooCommerce Product Category小部件。我已经设置了许多子类别的产品类别。其中一个类别是“海报”,并有几个子类别,如“星座”,“旅行”,“自然”...

默认情况下,Woocommerce只显示好的父类别。如果我单击“海报”类别,我将被重定向到“海报”类别存档页面,并且窗口小部件显示所有“海报”子项子类别,它是完美的。

现在,如果我点击其中一个“海报”子子类别,我会被重定向到相应的存档页面,但我的导航不再显示所有其他“海报”子子类别。

问题:
如何在浏览子类别时获取所有父类别和“兄弟”子类别?

折叠时标准导航的

随机示例

  

手机壳
  杯
  枕头
  海报
  衬衫
  贴纸

单击“海报”时

导航示例

  

手机壳
  杯
  枕头
  海报
   - 星标志
   - 旅行
  --Nature
  --Abstract
  --Typography
  衬衫
  贴纸

单击子类别时,例如“自然”,导航返回看起来像给出的第一个例子,全部折叠。但我希望它像第二个例子一样保持扩展。

屏幕截图中的Bellow是我对Woocommerce Product Category小部件的设置:

enter image description here

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的设置正确无误。以下代码仅针对档案类别页面,它现在将显示Woocommerce Product Category小部件中的所有子子类别,用于当前子类别:

add_filter('woocommerce_product_categories_widget_args', 'widget_product_categories_list_args', 10, 1);
function widget_product_categories_list_args( $list_args ) {
    global $wp_query;

    // Only for category archives pages
    if ( is_tax( $list_args['taxonomy'] ) ):
        // Get current category
        $current_cat = $wp_query->queried_object;

        // Get all Included category terms IDs in the widget
        $included_ids = explode( ',', $list_args['include'] );

        // Get All Childrens Ids from parent term or from current term
        if($current_cat->parent != 0 )
            $childrens = get_term_children( $current_cat->parent, $list_args['taxonomy'] );
        else
            $childrens = get_term_children( $current_cat->term_id, $list_args['taxonomy'] );

        // Loop through Children term Ids and add them to existing included ones
        foreach( $childrens as $child )
            $included_ids[] = $child;

        // Replace included product category term IDs in the $args array
        $list_args['include'] = $included_ids;
    endif;

    return $list_args;
}

代码进入活动子主题(或活动主题)的function.php文件。

经过测试和工作。