2016-08-22 48 views
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的设置仅显示类别和产品,基本上我只希望它显示子类别(不是父类别)和产品。我希望这是有道理的。

我一直想弄明白这一个星期,我会发疯。我觉得我有一个简单的解决方案,我刚刚忽略了。

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

谢谢

+0

我正在检查,我可以看到我可以做多个分类处理。我仍然不确定我是如何获得子类别的,但不是主类别,也不是他们的个人帖子。你能为我指出正确的方向吗?我衷心感谢您的帮助。 – TheKateDev

+0

我修正了那段代码中的语法错误,但那不是我正在寻找的。尽管谢谢你的帮助。 – TheKateDev

回答

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的子类别。我唯一的问题是,我需要选择多个父类别。我不熟悉将这个语法与冒号一起使用,所以我不确定如何指定多个父类别。此外,这可以防止子类别显示在其父母类别页面上,我不希望这种情况发生。如果任何人有一些反馈,它将不胜感激。

相关问题