2016-08-22 30 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的子類別。我唯一的問題是,我需要選擇多個父類別。我不熟悉將這個語法與冒號一起使用,所以我不確定如何指定多個父類別。此外,這可以防止子類別顯示在其父母類別頁面上,我不希望這種情況發生。如果任何人有一些反饋,它將不勝感激。

相關問題