0 ) return; // Deferred emails are sent at shutdown, after resume() — so don't defer. add_filter( 'woocommerce_defer_transactional_emails', '__return_false', 999 ); foreach ( self::email_ids() as $id ) { add_filter( 'woocommerce_email_enabled_' . $id, '__return_false', 999 ); } } public static function resume(): void { if ( self::$depth === 0 || --self::$depth > 0 ) return; foreach ( self::email_ids() as $id ) { remove_filter( 'woocommerce_email_enabled_' . $id, '__return_false', 999 ); } remove_filter( 'woocommerce_defer_transactional_emails', '__return_false', 999 ); } private static function email_ids(): array { $ids = []; foreach ( WC()->mailer()->get_emails() as $email ) { if ( ! empty( $email->id ) ) $ids[] = $email->id; } return $ids; } }