-
-
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' ); |
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?
@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
This is my code and I am trying to add a coupon for my online store but it's not working
add_action( 'woocommerce_before_cart', 'sh_coupons_matched' );
function sh_coupons_matched() {
global $woocommerce;
$sh_coupon = 'OnlineShop';
if ( $woocommerce->cart->has_discount( $sh_coupon ) ) return;
foreach ( $woocommerce->cart->cart_contents as $key => $values ) {
$autocoupon = array( 65 );
if( in_array( $values['product_id'], $autocoupon ) ) {
$woocommerce->cart->add_discount( $cw_coupon );
wc_print_notices();
}
}
}
I have followed this WooCommerce coupon code tutorial to implement the whole process