如何隐藏购物车图标下拉框中特定产品类别的价格
解决WooCommerce迷你购物车下拉列表显示特定类别产品价格的问题
嘿,这个问题我熟!你之前用woocommerce_cart_item_price过滤器成功隐藏了产品页和常规购物车页面的价格,但悬停购物车图标弹出的**迷你购物车(Widget Cart)**是通过另一个独立的钩子来控制价格输出的,所以得针对这个钩子也添加相同的隐藏逻辑才行。
解决方案步骤:
- 复用类别检查逻辑:把判断产品是否属于目标类别的代码抽成通用函数,避免重复写相同逻辑;
- 添加迷你购物车专属过滤器:针对
woocommerce_widget_cart_item_price钩子,应用同样的隐藏规则。
完整代码示例
// 通用函数:判断产品是否属于需要隐藏价格的类别 function is_product_in_hidden_price_category($product_id) { // 替换成你实际需要隐藏价格的产品类别Slug,多个类别用逗号分隔 $target_categories = array('hidden-price-category', 'another-hidden-category'); // 处理变体产品:检查父产品的类别 $product = wc_get_product($product_id); if ($product->is_type('variation')) { $product_id = $product->get_parent_id(); } return has_term($target_categories, 'product_cat', $product_id); } // 隐藏常规购物车页面的特定类别产品价格 add_filter('woocommerce_cart_item_price', 'hide_cart_item_price_for_hidden_categories', 10, 3); function hide_cart_item_price_for_hidden_categories($price, $cart_item, $cart_item_key) { if (is_product_in_hidden_price_category($cart_item['product_id'])) { // 这里可以返回空字符串,或者自定义文本比如「价格面议」「需咨询客服」 return '<em>价格面议</em>'; } return $price; } // 隐藏迷你购物车下拉列表的特定类别产品价格 add_filter('woocommerce_widget_cart_item_price', 'hide_widget_cart_item_price_for_hidden_categories', 10, 3); function hide_widget_cart_item_price_for_hidden_categories($price, $cart_item, $cart_item_key) { if (is_product_in_hidden_price_category($cart_item['product_id'])) { // 和上面保持一致的显示文本 return '<em>价格面议</em>'; } return $price; }
使用说明:
- 把上述代码添加到你的WordPress主题的
functions.php文件中,或者使用「Code Snippets」这类自定义代码插件来添加(更安全,避免主题更新丢失代码); - 记得把
$target_categories里的类别Slug替换成你实际需要隐藏价格的产品类别Slug; - 如果不需要自定义文本,直接返回
''(空字符串)即可完全隐藏价格。
内容的提问来源于stack exchange,提问作者user9107942
相关产品推荐
相关产品推荐

