En el siguiente tutorial os cuento cómo podemos desactivar el email que en WordPress + WooCommerce se envía cuando un cliente finaliza un pedido.
El caso que trato en el vídeo es uno que se me ha dado esta semana con un cliente, que no quería que WooCommerce enviase email de confirmación de compra si se había comprado un producto de una categoría determinada.
Vídeo tutorial de cómo desactivar envío de correo en WooCommerce
Fragmento de código PHP necesario
add_filter( 'woocommerce_email_recipient_customer_processing_order', 'detener_envio_correo_woocommerce_categorias', 10, 2 );
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'detener_envio_correo_woocommerce_categorias', 10, 2 );
function detener_envio_correo_woocommerce_categorias( $recipient, $order )
{
if( is_admin() ) return $recipient;
// En este array ponemos la lista de IDs o slugs de las categorías
$categorias = array( 1234 );
// Recorremos todo el pedido en búsqueda de productos que estén en las categorías anteriores
foreach ( $order->get_items() as $item )
{
// Instanciamos el objeto de la clase WC_Product
$producto = $item->get_product();
// Obtenemos el id del producto, teniendo en cuenta que pudiera ser una variación
$idproducto = $producto->is_type('variation') ? $producto->get_parent_id() : $producto->get_id();
// Comprobamos las categorías del producto
if( has_term( $categorias, 'product_cat', $idproducto ) )
{
return ''; /* Si el producto está presente en alguna de las categorías iniciales,
no devolvemos nada en el destinatario. De esa forma WooCommerce no envía el correo.
*/
}
}
return $recipient;
}