我正在開發我的Woocommerce商店的b2b部分。我已經成功地過濾了woocommerce_product_query_meta_query
,只顯示已經啟用了b2b部分的產品給b2b用戶。
然而,我找不到一種方法來隱藏在Woocommerce類別小部件中顯示0個結果的產品類別(因為該類別中沒有啟用b2b部分的產品)。
我考慮重寫預設的Woocommerce小工具程式碼,並為每個類別(和子類別)執行wp查詢,傳回啟用了b2b的該類別中的產品數量。但是對於大量的產品和類別來說,這似乎非常低效。
有沒有一種方法可以隱藏Woocommerce類別小工具中的「空」類別(該類別中沒有啟用b2b的產品)?
謝謝任何建議。
編輯
為了澄清我的問題:這是我用來過濾產品查詢,只顯示具有_eda_display_in_b2b
元設定為yes
的產品的函數:
function show_only_b2b_products( $meta_query, $query ) { if ( is_admin() || ! is_user_logged_in() || ! is_b2b_user() ) { return $meta_query; } $meta_query[] = array( 'key' => '_eda_display_in_b2b', 'value' => 'yes', 'compare' => '=' ); return $meta_query; } add_filter( 'woocommerce_product_query_meta_query', 'show_only_b2b_products', 10, 2 );
範例: https://klon.vozikyprozivot.cz/kategorie-produktu/pridavne-pohony/
這個類別對一般客戶和未登入使用者來說不是空的。但是對於b2b客戶來說,沒有產品可以展示。所以我需要為b2b客戶隱藏這個類別的小工具。
如果您正在指的是產品分類小部件,那麼有一個設定可以隱藏空分類:
#如果您指的是其他內容,請提供一個範例頁面的URL以及您網站的系統狀態。您可以透過WooCommerce > 狀態找到它。選擇“取得系統報告”,然後“複製以供支援使用”。完成後,請將其貼在您的回覆中。
希望這能幫到您。
======編輯======
#我認為對於上述問題,您可以使用wc類別鉤子並刪除該類別。請檢查下面的程式碼:
在上面的程式碼中,我認為您可以製定邏輯並檢查類別是否有產品,並為非產品類別建立ID陣列。
透過這種方式,您可以從清單和下拉清單中排除該類別。
希望這對您有幫助。
在Harshit Vaid的大力幫助下,我已經成功解決了這個問題: