woocommerce以编程方式应用优惠券

时间:2015-11-16 00:46:29

标签: php wordpress woocommerce

这是我正在使用的代码:

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;

我遇到的问题是,当我进入结帐页面时,优惠券仍然会被应用。它没有应用在购物车上,这是理想的结果,但我不想在这种情况下应用它。

有任何帮助吗?

1 个答案:

答案 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 );
}