There are times when doing manual work – such as creating a WooCommerce coupon – is too time consuming. Imagine you need to bulk generate 1,000 coupon codes – sure you have 2,000 minutes at your disposal to do it all by hand?
Well, today, we’ll take a look at how to bulk generate coupon codes from the WordPress backend by using a simple PHP “for“. Once the function triggers, it will just be a matter of seconds!
Enjoy!
PHP Snippet: Bulk Create Coupon Codes @ WordPress Dashboard
Note: in order to trigger the function, you must go to any WordPress admin URL with the “bb-gen-coupons” URL parameter e.g. /wp-admin/admin.php?bb-gen-coupons. This will make sure the coupons are generated.
/**
* @snippet Bulk Generate Coupons @ WordPress Admin
* @how-to businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 6
* @community https://businessbloomer.com/club/
*/
add_action( 'admin_init', 'bbloomer_generate_coupons_admin' );
function bbloomer_generate_coupons_admin() {
if ( isset( $_REQUEST['bb-gen-coupons'] ) ) {
if ( ! current_user_can( 'manage_woocommerce' ) ) {
wp_die( 'You do not have permission to bulk generate coupons' );
}
$number_of_coupons = 100; // DEFINE BULK QUANTITY
for ( $i = 1; $i <= $number_of_coupons; $i++ ) {
$coupon = new WC_Coupon();
$random_code = bin2hex( random_bytes( 8 ) ); // 16 CHARS PHP 7+ ONLY
if ( wc_get_coupon_id_by_code( $random_code ) ) continue; // SKIP IF CODE EXISTS
$coupon->set_code( $random_code );
$coupon->set_description( 'Coupon generated programmatically (' . $i . '/' . $number_of_coupons . ')' );
$coupon->set_discount_type( 'percent' );
$coupon->set_amount( 20 );
$coupon->set_minimum_amount( 1 );
$coupon->set_individual_use( true );
$coupon->set_product_categories( array( 54, 55 ) );
$coupon->set_usage_limit_per_user( 1 );
$coupon->save();
}
}
}
This is so great! I love it.
Is there any way to define one product it can only be used on.
Also can it be set to be used once and then expire? And be used within a particular date range?
Thanks a lot!
Scott
Scott, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!
Hello, the coupons generated using the guide do not have the “Promo Code Usage Limit” parameter, which is automatically set to infinite.
I’m sure you can add an argument to set that limit
Hi, code works fine, thanks.
I was wondering how easy it could be to make the code all in capital and in this format: XXXX-XXXX-XXXX-XXXX
Any clue how to do that easily?
Thanks
Matthias
Well at the moment I generate random codes. If you modify this, you can give it the format you want:
Hi,
Great article! What if you wanted to do just the opposite and bulk delete the coupon codes?
Hello Josh, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!