这是我正在使用的代码:
if (!is_admin()):
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
//add_action('woocommerce_before_cart_table', 'apply_matched_coupons');
//add_action('woocommerce_before_checkout_form', 'apply_matched_coupons');
function apply_matched_coupons() {
global $woocommerce;
$coupon_code = 'somecodehere';
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
if ( $woocommerce->cart->cart_contents_total >= 1 ) {
$woocommerce->cart->add_discount( $coupon_code );
wc_print_notices();
}
}
endif;
我遇到的问题是,当我进入结帐页面时,优惠券仍然会被应用。它没有应用在购物车上,这是理想的结果,但我不想在这种情况下应用它。
有任何帮助吗?
答案 0 :(得分:4)
根据您的解释,听起来您应该使用woocommerce_add_to_cart
挂钩,该挂钩在产品成功添加到购物车时运行。我也认为您不应该使用is_admin()
,因为这只会检查您是否在管理页面上...如果当前用户是管理员,则不会。
我会做以下事情:
add_action( 'woocommerce_add_to_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
// If the current user is a shop admin
if ( current_user_can( 'manage_woocommerce' ) ) return;
// If the user is on the cart or checkout page
if ( is_cart() || is_checkout() ) return;
$coupon_code = 'somecodehere';
if ( WC()->cart->has_discount( $coupon_code ) ) return;
WC()->cart->add_discount( $coupon_code );
}