我在过去4小时内尝试过研究这个问题的答案,但我还没有找到答案。
我在我的woocommerce结帐页面添加了自定义费用。这是由于woocommerce航运无法提供复杂的交付计算。
如果输入优惠券,我现在需要创建优惠券以将此自定义费用设置为零。
这是设定我的自定义费用
WC()->cart->add_fee( __('Shipping', 'woocommerce'), $shipping_price );
这是我需要实现的目标。
if($coupon_code == "this-string"){
$shipping_price = 0;
}
我需要一种方法来检查提交的优惠券代码是否等于“this-string”,如果是,我需要将$ shipping Fee设置为零。
请大家帮忙。
答案 0 :(得分:0)
您可以致电WC()->cart->get_applied_coupons()
以获取应用于购物车的所有优惠券。然后,您可以检查您的优惠券代码是否在该数组中。像这样:
if(in_array($coupon_code, WC()->cart->get_applied_coupons())) {
// Do something
}
答案 1 :(得分:0)
未经测试,但我认为您应该在应用代码时执行某些操作,因此woocommerce_applied_coupon
挂钩是相关的。
function so_46429329_applied_coupon( $coupon_code ) {
if( $coupon_code == "this-string" ){
$shipping_price = 0;
WC()->cart->add_fee( __('Shipping', 'woocommerce'), $shipping_price );
}
}
add_action( 'woocommerce_applied_coupon', 'so_46429329_applied_coupon' );
我尚未测试过的部分是否会覆盖现有的“运费”,或者您是否需要先找到删除该运费的方法。
答案 2 :(得分:0)
以下功能将为您的woo-commerce Cart添加运费,之后会增加结账价格。
// ADD SHIPPING COST
function woo_add_cart_fee() {
WC()->cart->add_fee( __('Shipping', 'woocommerce'), 100 );
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
如果您想将自定义优惠券应用于运费,您可以按照此
的方式执行某些操作// ADD SHIPPING COST
function woo_add_cart_fee() {
$custom_coupon = $_GET["coupon_name"];
if ($custom_coupon = 'discount_code_half') {
WC()->cart->add_fee( __('Shipping', 'woocommerce'), 100 );
}elseif ($custom_coupon = 'discount_code_more_than_half') {
WC()->cart->add_fee( __('Shipping', 'woocommerce'), 50 );
}elseif ($custom_coupon = 'discount_code_free') {
WC()->cart->add_fee( __('Shipping', 'woocommerce'), 0 );
}else ( ! $custom_coupon) {
WC()->cart->add_fee( __('Shipping', 'woocommerce'), 200 );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
要使此方法有效,您需要使用优惠券按钮将优惠券名称提交到购物车页面。
从上一页开始,或者您可以将其提交到它所在的同一页面。无论哪种方式,您的页面都必须刷新,以便您可以使用
$custom_coupon = $_GET["coupon_name"];
希望这个答案有所帮助。 :)