-
-
Save mikejolley/3969579 to your computer and use it in GitHub Desktop.
$coupon_code = 'UNIQUECODE'; // Code | |
$amount = '10'; // Amount | |
$discount_type = 'fixed_cart'; // Type: fixed_cart, percent, fixed_product, percent_product | |
$coupon = array( | |
'post_title' => $coupon_code, | |
'post_content' => '', | |
'post_status' => 'publish', | |
'post_author' => 1, | |
'post_type' => 'shop_coupon' | |
); | |
$new_coupon_id = wp_insert_post( $coupon ); | |
// Add meta | |
update_post_meta( $new_coupon_id, 'discount_type', $discount_type ); | |
update_post_meta( $new_coupon_id, 'coupon_amount', $amount ); | |
update_post_meta( $new_coupon_id, 'individual_use', 'no' ); | |
update_post_meta( $new_coupon_id, 'product_ids', '' ); | |
update_post_meta( $new_coupon_id, 'exclude_product_ids', '' ); | |
update_post_meta( $new_coupon_id, 'usage_limit', '' ); | |
update_post_meta( $new_coupon_id, 'expiry_date', '' ); | |
update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' ); | |
update_post_meta( $new_coupon_id, 'free_shipping', 'no' ); |
@mikejolley, is this code still correct for WC4?
@dcx15 yikes it's 8 years old but it should work. However, I'd suggest looking into using the WC_Coupon
class instead. https://docs.woocommerce.com/wc-apidocs/class-WC_Coupon.html
Thanks for confirming Mike!
For anyone else that stumbled on this gist via Google, I found this answer on SO useful https://stackoverflow.com/a/61874195. All of the other blog posts and SO answers seem to be very outdated in Google results.
How can we add something like add X quantity of any product and get Y % off?
Better using the wc_coupon instance with its save method now.
@mikejolley Does this work in 2023? I'm just starting a new store with my own designs and I can't really afford to pay for those 50$ a month plugins (not before I will actually start making some money on this :D)
Thank you for all the effort you put in this so far!
Dom
Hi!
If I want a coupon to be generated at the time of completing the payment and that coupon is the phone number at checkout. how can I do this?