Search code examples
phpwordpressmethodswoocommercecoupon

How to Update Coupon Code Objects in Woocommerce


How to Update Coupon Code Objects in Woocommerce (Wordpress).

$beforeadduseremail="test@gmail.com";

update_post_meta( 21, 'email_restrictions', $beforeadduseremail);

Solution

  • It can be done in different ways:

    Using Wordpress get_post_meta() and update_post_meta() on customer_email meta key:

    $coupon_post_id = 21; // The post ID
    $user_email     = 'test@gmail.com'; // The email to be added
    
    // Get existing email restrictions
    $email_restrictions = (array) get_post_meta( $coupon_post_id, 'customer_email', true );
    
    // Add the new email to existing emails
    if ( ! in_array( $user_email, $email_restrictions ) ) {
        $email_restrictions[] = $user_email;
    }
    
    // Set a back updated email restrictions array
    update_post_meta( $coupon_post_id, 'customer_email', $email_restrictions );
    

    Using CRUD methods on the WC_Coupon object instance (since WooCommerce 3):

    $coupon_code = 'happysummer'; // The coupon code
    $user_email  = 'test@gmail.com'; // The email to be added
    
        // Get an instance of the WC_Coupon object
        $coupon = new WC_Coupon( $coupon_code );
    
        // Get email restrictions
        $email_restrictions = (array) $coupon->get_email_restrictions();
    
        // Add the customer email to the restrictions array
        $email_restrictions[] = $customer_email;
    
        // set the new array of email restrictions
        $coupon->set_email_restrictions( $email_restrictions );
    
        // Save the coupon data
        $coupon->save();