【发布时间】:2021-12-30 02:26:33
【问题描述】:
我正在使用自定义代码来阻止所有优惠券中的产品。 为此,每个产品在后端都有一个额外的复选框。
代码主要基于该答案:https://*.com/a/47603782/1788961
您可以在此处查看后端复选框:
到目前为止一切正常。
但在我们更改捆绑包以单独定价捆绑产品后,该复选框不再起作用。
我猜该代码不适用于捆绑包中的产品。
这是使优惠券在产品级别无效并将产品折扣金额设置为零的代码:
// Make coupons invalid at product level
add_filter('woocommerce_coupon_is_valid_for_product', 'set_coupon_validity_for_excluded_products', 12, 4);
function set_coupon_validity_for_excluded_products($valid, $product, $coupon, $values ){
if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $valid;
$disabled_products = get_option( '_products_disabled_for_coupons' );
if( in_array( $product->get_id(), $disabled_products ) )
$valid = false;
return $valid;
}
// Set the product discount amount to zero
add_filter( 'woocommerce_coupon_get_discount_amount', 'zero_discount_for_excluded_products', 12, 5 );
function zero_discount_for_excluded_products($discount, $discounting_amount, $cart_item, $single, $coupon ){
if( ! count(get_option( '_products_disabled_for_coupons' )) > 0 ) return $discount;
$disabled_products = get_option( '_products_disabled_for_coupons' );
if( in_array( $cart_item['product_id'], $disabled_products ) )
$discount = 0;
return $discount;
}
有没有办法检查购物车商品的产品类型并禁用捆绑产品的优惠券?
我知道如何检查产品类型并尝试了一些方法。但到目前为止没有任何效果。
我在下面的答案中尝试了一些东西和来自 Howard E 的代码。不幸的是,目前没有任何效果。
但我意识到了一些事情。
如果捆绑包具有正常价格和促销价,则一切正常。但是,如果捆绑产品是单独的(如下面的屏幕所示),代码就不再起作用了。
我想我必须检查一个项目是否是父捆绑项目的一部分? 这可能在购物车中吗?
【问题讨论】:
标签: php wordpress woocommerce coupon woocommerce-product-bundles