首页 文章

在商店页面上显示产品子类别(非父类别)和产品

提问于
浏览
2

我有2个产品类别 "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有一个只显示类别和产品的设置,基本上我只想显示子类别(不是父类别)和产品 . 我希望这是有道理的 .

我一直试图解决这个问题一个星期,我疯了 . 我觉得有一个我忽略的简单解决方案 .

我做错了什么?我怎样才能做到这一点?

谢谢

1 回答

  • 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的子类别 . 我唯一的问题是我需要选择多个父类别 . 我不熟悉在冒号中使用此语法,因此我不确定如何指定多个父类别 . 这也防止子类别显示在其父类别页面上,我不希望这种情况发生 . 如果有人有一些反馈,将非常感激 .

相关问题