如何禁用WooCommerce组合商品购物车页面的数量修改功能?
解决Combo Offer WooCommerce插件购物车页可修改组合商品数量的问题
问题分析
你使用Combo Offer WooCommerce插件创建固定数量的捆绑产品,已关闭商品页的数量修改选项,但购物车页仍能修改组合内商品的数量。之前添加的代码未生效,核心原因是产品类型的判断逻辑错误——WooCommerce中获取产品类型应通过产品对象的get_type()方法,而非直接读取_product_type元数据,且Combo Offer插件的组合商品在购物车中会带有特定标识,需要结合判断。
修正后的解决方案
方案1:禁用组合商品及子商品的数量修改功能
将以下代码添加到主题的functions.php文件或自定义插件中:
add_filter('woocommerce_cart_item_quantity', 'disable_combo_product_quantity_in_cart', 20, 3); function disable_combo_product_quantity_in_cart($product_quantity, $cart_item_key, $cart_item) { // 判断当前商品是否为Combo Offer组合主产品,或属于组合的子商品 $is_combo_main = $cart_item['data']->get_type() === 'wooco'; $is_combo_child = isset($cart_item['wooco_parent_id']); if ($is_combo_main || $is_combo_child) { // 替换可编辑的数量输入框为隐藏字段,禁止修改 return '<input type="hidden" name="cart[' . esc_attr($cart_item_key) . '][qty]" value="' . esc_attr($cart_item['quantity']) . '" />'; } return $product_quantity; }
方案2:隐藏数量调整按钮(可选)
若你的主题显示数量增减按钮,可添加以下CSS彻底隐藏这些可交互元素:
/* 隐藏Combo商品的数量调整按钮区域 */ .cart_item.wooco-product .quantity, .cart_item[data-wooco-parent] .quantity { display: none !important; }
代码说明
- 判断逻辑优化:同时覆盖组合主产品(类型标识为
wooco)和组合子商品(带有wooco_parent_id元数据),确保所有关联商品都被限制。 - 优先级调整:将钩子优先级设为20,确保代码在插件默认输出之后执行,覆盖原有数量输入框。
- CSS补充:针对主题的数量控制按钮做隐藏,避免用户看到可点击的调整元素,彻底阻断修改路径。
内容的提问来源于stack exchange,提问作者engnajjar
相关产品推荐
相关产品推荐

