我有两个产品类别 "current-probes"
和 "accessories"
,其中有一些子类别 "flex-ct"
, "tlar"
和 "test-lead"
。
我想在商店页面,我的子类别和我的产品中显示。我知道WooCommerce有一个设置来显示父类别和产品,但不显示子类别。
我还需要阻止显示子类别的各个产品。
以下是我尝试过的代码(位于我的functions.php文件中):
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! is_admin() && is_shop() || is_product_category( array( 'current-probes', 'accessories' )) ) {
$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'flex-ct', 'tlar', 'test-lead' ),
'operator' => 'NOT IN'
)));
}
remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
这可以防止子类别的各个产品显示,但我需要在循环中显示实际的子类别。
WooCommerce有一个只显示类别和产品的设置,基本上我只想显示子类别(不是父类别)和产品。我希望这是有道理的。
我一直试图解决这个问题一个星期,我疯了。我觉得有一个简单的解决方案,我忽略了。
我做错了什么?我怎样才能做到这一点?
由于
答案 0 :(得分:0)
我几乎找到了我要找的东西。它实际上没有使用pre_get_posts。这是代码:
add_filter( 'woocommerce_product_subcategories_args', 'filter_woocommerce_product_subcategories_args', 10, 1 );
function filter_woocommerce_product_subcategories_args( $array ) {
if ( ! is_admin() && is_shop() ) {
$category = get_term_by('name', 'Products', 'product_cat');
$parent_id = ($category) ? $category->term_id : 10;
$array['parent'] = $parent_id;
return $array;
};
}
这将输出类别10的子类别。我唯一的问题是我需要选择多个父类别。我不熟悉将此语法与冒号一起使用,因此我不确定如何指定多个父类别。这也防止子类别显示在其父类别页面上,我也不希望这种情况发生。如果有人有一些反馈意见,那将非常感激。