我正在使用 Woocommerce 建立一家商店并使用 WooCommerce 产品类别小部件。我已经设置了许多产品类别和子类别。其中一个类别是“海报”,并有几个子类别,例如“星座”、“旅行”、“自然”......
默认情况下,Woocommerce 仅显示父类别,这很好。如果我单击“海报”类别,我将被重定向到“海报”类别存档页面,并且小部件会显示所有“海报”子类别,这非常完美。
现在,如果我单击这些“海报”子类别之一,我将被重定向到相应的存档页面,但我的导航不再显示所有其他“海报”子类别。
问题:
在浏览子类别时如何获取所有父类别和“同级”子类别?
随机示例折叠时的标准导航:
手机壳
Mugs
枕头
海报
衬衫
贴纸
导航示例当点击“海报”时:
手机壳
Mugs
枕头
海报
- 星座
- 旅行
- 自然
- 抽象的
--排版
衬衫
贴纸
单击子类别时,例如“自然”,导航返回到第一个示例的样子,全部折叠起来。但我希望它像第二个例子一样保持扩展。
屏幕截图中的下面是我对 Woocommerce 产品类别小部件的设置:
任何帮助将不胜感激。
您的设置是正确的。下面的代码仅针对档案类别页面,现在它将显示 Woocommerce 产品类别小部件中当前子类别的所有子子类别:
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 文件中。
经过测试并有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)