Wordpress Woocommerce:如何检查用户是否使用过优惠券?

Wordpress Woocommerce:如何检查用户是否使用过优惠券?,wordpress,woocommerce,coupon,Wordpress,Woocommerce,Coupon,我在woocommerce客户仪表板上创建“文本字段”,该字段用于兑换优惠券。假设我在woocommerce优惠券上设置了优惠券代码“BIRTHDAY29”以供使用 用户在我的“文本字段”中输入“BIRTHDAY29”,然后点击“兑换”按钮,这样就可以通过编程将交易应用到他们的交易历史记录中 我怎么知道“生日29”优惠券被该用户使用了多少次?我想检查该用户是否使用过“BIRTHDAY29”,然后如果该用户使用过BIRTHDAY29,我想做“某事…” 希望你们能理解我的意思,谢谢 给你: func

我在woocommerce客户仪表板上创建“文本字段”,该字段用于兑换优惠券。假设我在woocommerce优惠券上设置了优惠券代码“BIRTHDAY29”以供使用

用户在我的“文本字段”中输入“BIRTHDAY29”,然后点击“兑换”按钮,这样就可以通过编程将交易应用到他们的交易历史记录中

我怎么知道“生日29”优惠券被该用户使用了多少次?我想检查该用户是否使用过“BIRTHDAY29”,然后如果该用户使用过BIRTHDAY29,我想做“某事…”

希望你们能理解我的意思,谢谢

给你:

function coupon_usage_for_customer( $coupon_code, $user_id = NULL, $email = NULL )
{
    $usage = 0;

    // There must either be a user ID or email address
    if( empty( $user_id ) && empty( $email ) )
        return FALSE;

    $params = [
        'limit' => -1,
        'type'  => 'shop_order'
    ];

    if( ! empty( $user_id ) ){
        $params['customer_id'] = $user_id;
    }

    else if( ! empty( $email ) ){
        $params['billing_email'] = $email;
    }

    // Get orders of customer
    $orders = wc_get_orders( $params );

    // Check if coupon used
    foreach( $orders as $order )
    {
        $coupons_used = $order->get_coupon_codes();

        if( 
            is_array( $coupons_used ) &&
            in_array( $coupon_code, $coupons_used ) 
        ){
            $usage++;
        }
    }

    return $usage;  
}

add_action('woocommerce_after_register_post_type', function(){
    $user_id = 12345;
    $email   = 'oneguy@example.com';
    $birthday29usage = coupon_usage_for_customer( 'BIRTHDAY29', $user_id, $email );
    if( ! $birthday29usage )
        echo 'The user has not birthday 29ed...';
});

您是否关心没有账户结账的客户?“用户”有用户ID,但许多商店不要求客户拥有用户帐户才能结账。我只是在问,因为如果要求客户拥有一个帐户,并因此存在一个用户ID,那么解决方案就会简单得多。