Esta es una personalización genial que puede ser útil para los administradores de la tienda de WooCommerce, especialmente cuando realizan cambios de estado de pedido manual a través de la página de administración de pedidos.
Como sabe, cada cambio de estado de pedido desencadena un correo electrónico de pedido («procesamiento», «completado», «en espera», etc.), y a veces el administrador de la tienda no quiere reenviarlos después de cada edición.
En este tutorial rápido, veremos cómo agregar una casilla de verificación a la página de edición de pedido único, para que los correos electrónicos estén deshabilitados siempre que la casilla de verificación se mantenga marcada. ¡Disfrutar!
Php Snippet: casilla de verificación para deshabilitar los correos electrónicos de pedido @ WooCommerce Página de edición de un solo pedido
/** * @snippet Disable Emails for Single Order @ WooCommerce Admin * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 7 * @community https://businessbloomer.com/club/ */ add_action( 'woocommerce_admin_order_data_after_order_details', 'bbloomer_disable_order_emails', 9999 ); function bbloomer_disable_order_emails( $order ) { woocommerce_wp_checkbox( array( 'id' => '_disable_order_emails', 'label' => 'Disable Order Emails', 'description' => 'Check this if you wish to disable emails when order status changes', 'wrapper_class' => 'form-field-wide', 'style' => 'width:auto', )); } add_action( 'save_post_shop_order', 'bbloomer_save_disable_order_emails' ); function bbloomer_save_disable_order_emails( $order_id ) { global $pagenow, $typenow; if ( 'post.php' !== $pagenow || 'shop_order' !== $typenow ) return; if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( isset( $_POST['_disable_order_emails'] ) ) { update_post_meta( $order_id, '_disable_order_emails', $_POST['_disable_order_emails'] ); } else delete_post_meta( $order_id, '_disable_order_emails' ); } add_filter( 'woocommerce_email_recipient_customer_on_hold_order', 'bbloomer_disable_customer_emails_if_disabled', 9999, 2 ); add_filter( 'woocommerce_email_recipient_customer_processing_order', 'bbloomer_disable_customer_emails_if_disabled', 9999, 2 ); add_filter( 'woocommerce_email_recipient_customer_completed_order', 'bbloomer_disable_customer_emails_if_disabled', 9999, 2 ); // TARGET OTHER EMAILS WITH https://www.businessbloomer.com/woocommerce-add-extra-content-order-email/ function bbloomer_disable_customer_emails_if_disabled( $recipient, $order ) { $page = $_GET['page'] = isset( $_GET['page'] ) ? $_GET['page'] : ''; if ( 'wc-settings' === $page ) { return $recipient; } if ( get_post_meta( $order->get_id(), '_disable_order_emails', true ) ) $recipient = ''; return $recipient; }