@@ -90,6 +90,7 @@ public static function orders( $args, $assoc_args ) {
9090 }
9191
9292 if ( $ amount > 0 ) {
93+ static ::disable_emails ();
9394 $ progress = \WP_CLI \Utils \make_progress_bar ( 'Generating orders ' , $ amount );
9495 for ( $ i = 1 ; $ i <= $ amount ; $ i ++ ) {
9596 Generator \Order::generate ( true , $ assoc_args );
@@ -120,6 +121,7 @@ public static function orders( $args, $assoc_args ) {
120121 public static function customers ( $ args , $ assoc_args ) {
121122 list ( $ amount ) = $ args ;
122123
124+ static ::disable_emails ();
123125 $ progress = \WP_CLI \Utils \make_progress_bar ( 'Generating customers ' , $ amount );
124126 for ( $ i = 1 ; $ i <= $ amount ; $ i ++ ) {
125127 Generator \Customer::generate ();
@@ -128,6 +130,40 @@ public static function customers( $args, $assoc_args ) {
128130 $ progress ->finish ();
129131 WP_CLI ::success ( $ amount . ' customers generated. ' );
130132 }
133+
134+ /**
135+ * Disable sending WooCommerce emails when generating objects.
136+ */
137+ protected static function disable_emails () {
138+ $ email_actions = array (
139+ 'woocommerce_low_stock ' ,
140+ 'woocommerce_no_stock ' ,
141+ 'woocommerce_product_on_backorder ' ,
142+ 'woocommerce_order_status_pending_to_processing ' ,
143+ 'woocommerce_order_status_pending_to_completed ' ,
144+ 'woocommerce_order_status_processing_to_cancelled ' ,
145+ 'woocommerce_order_status_pending_to_failed ' ,
146+ 'woocommerce_order_status_pending_to_on-hold ' ,
147+ 'woocommerce_order_status_failed_to_processing ' ,
148+ 'woocommerce_order_status_failed_to_completed ' ,
149+ 'woocommerce_order_status_failed_to_on-hold ' ,
150+ 'woocommerce_order_status_cancelled_to_processing ' ,
151+ 'woocommerce_order_status_cancelled_to_completed ' ,
152+ 'woocommerce_order_status_cancelled_to_on-hold ' ,
153+ 'woocommerce_order_status_on-hold_to_processing ' ,
154+ 'woocommerce_order_status_on-hold_to_cancelled ' ,
155+ 'woocommerce_order_status_on-hold_to_failed ' ,
156+ 'woocommerce_order_status_completed ' ,
157+ 'woocommerce_order_fully_refunded ' ,
158+ 'woocommerce_order_partially_refunded ' ,
159+ 'woocommerce_new_customer_note ' ,
160+ 'woocommerce_created_customer ' ,
161+ );
162+
163+ foreach ( $ email_actions as $ action ) {
164+ remove_action ( $ action , array ( 'WC_Emails ' , 'send_transactional_email ' ), 10 , 10 );
165+ }
166+ }
131167}
132168WP_CLI ::add_command ( 'wc generate products ' , array ( 'WC\SmoothGenerator\CLI ' , 'products ' ) );
133169WP_CLI ::add_command ( 'wc generate orders ' , array ( 'WC\SmoothGenerator\CLI ' , 'orders ' ), array (
0 commit comments