我正在与Woocommerce建立一个商店并使用WooCommerce Product Category小部件。我已经设置了许多子类别的产品类别。其中一个类别是“海报”,并有几个子类别,如“星座”,“旅行”,“自然”...
默认情况下,Woocommerce只显示好的父类别。如果我单击“海报”类别,我将被重定向到“海报”类别存档页面,并且窗口小部件显示所有“海报”子项子类别,它是完美的。
现在,如果我点击其中一个“海报”子子类别,我会被重定向到相应的存档页面,但我的导航不再显示所有其他“海报”子子类别。
问题:
如何在浏览子类别时获取所有父类别和“兄弟”子类别?
随机示例:
单击“海报”时手机壳
杯
枕头
海报
衬衫
贴纸
导航示例:
手机壳
杯
枕头
海报
- 星标志
- 旅行
--Nature
--Abstract
--Typography
衬衫
贴纸
单击子类别时,例如“自然”,导航返回看起来像给出的第一个例子,全部折叠。但我希望它像第二个例子一样保持扩展。
屏幕截图中的Bellow是我对Woocommerce Product Category小部件的设置:
任何帮助将不胜感激。
答案 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文件。
经过测试和工作。