Este borrador debe fusionarse con el artículo original, no publicarse como uno nuevo. Publicarlo directamente crea un artículo duplicado en la URL incorrecta.
➡️ Revise el borrador y luego ejecute
/kb-publish 86cxuy4ru — detecta el enlace rydm y se dirige a través del punto final de fusión automáticamente.Artículo original: Cómo establecer un asunto de correo electrónico diferente para nuevos pedidos mayoristas · Tarea de ClickUp: Cómo establecer un asunto de correo electrónico diferente para nuevos pedidos mayoristas
Si tiene una tienda mayorista, es posible que desee que sus correos electrónicos de notificación de nuevos pedidos identifiquen claramente los pedidos mayoristas e incluso muestren qué rol mayorista realizó el pedido. WooCommerce Wholesale Prices Premium aún no incluye una forma integrada de anular el asunto del correo electrónico, pero puede personalizarlo utilizando un fragmento de código. Este artículo le muestra cómo.
Requisitos previos
- WooCommerce Wholesale Prices Premium instalado y activado
- Acceso al archivo
functions.phpde su tema o a un plugin de fragmentos de código (como WPCode)
Cómo personalizar el asunto del correo electrónico de nuevos pedidos para pedidos mayoristas
Por defecto, WooCommerce utiliza el mismo asunto de correo electrónico para todos los pedidos nuevos. El fragmento siguiente se engancha a woocommerce_email_subject_new_order y añade el nombre para mostrar del rol mayorista al asunto cuando el pedido es un pedido mayorista. Para los pedidos minoristas, el asunto predeterminado de WooCommerce se devuelve sin cambios.
Añada el siguiente fragmento al archivo functions.php de su tema secundario o a un plugin de fragmentos de código:
// Custom New Order Subject - Adding the Wholesale Role Name in the Subject Line
add_filter( 'woocommerce_email_subject_new_order', 'wwpp_change_email_subject', 1, 2 );
function wwpp_change_email_subject( $subject, $order ) {
// Only customise the subject for wholesale orders.
$order_type = $order->get_meta( '_wwpp_order_type', true );
if ( 'wholesale' !== $order_type ) {
return $subject;
}
// Get the wholesale role slug stored on the order (e.g. 'wholesale_customer').
$role_slug = $order->get_meta( '_wwpp_wholesale_order_type', true );
// Look up the human-readable role name from the registered wholesale roles.
// getAllRegisteredWholesaleRoles() returns an array keyed by role slug,
// each entry containing a 'roleName' key with the display name.
$all_wholesale_roles = WWP_Wholesale_Roles::getInstance()->getAllRegisteredWholesaleRoles();
$role_label = isset( $all_wholesale_roles[ $role_slug ]['roleName'] )
? $all_wholesale_roles[ $role_slug ]['roleName']
: $role_slug; // Fallback to slug if the role is no longer registered.
// Build the custom subject using the readable role name.
$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$subject = sprintf( '[%s] Order #%s - %s', $role_label, $order->get_id(), $blogname );
return $subject;
}
Qué almacenan _wwpp_order_type y _wwpp_wholesale_order_type: Cada pedido realizado por un cliente mayorista recibe dos valores meta. _wwpp_order_type es 'wholesale' o 'retail'. _wwpp_wholesale_order_type almacena la clave del rol mayorista (por ejemplo, wholesale_customer), no el nombre para mostrar. El fragmento anterior utiliza getAllRegisteredWholesaleRoles() para convertir la clave en la etiqueta legible que configuró en sus ajustes de roles mayoristas.
Solución de problemas
El asunto no está cambiando. Compruebe que el fragmento se ha guardado correctamente y que no hay errores de PHP. El filtro woocommerce_email_subject_new_order solo se ejecuta cuando WooCommerce envía el correo electrónico del nuevo pedido. Confirme que el correo electrónico está habilitado en WooCommerce → Ajustes → Correos electrónicos → Nuevo pedido.
El asunto muestra la clave del rol en lugar del nombre para mostrar. Esto ocurre si el rol mayorista se eliminó o se renombró después de realizar el pedido. El fragmento recurre a la clave en ese caso. Si ve claves de forma coherente, confirme que el rol todavía está registrado en WooCommerce Wholesale Prices → Wholesale Roles.
Los pedidos minoristas también muestran un asunto modificado. Asegúrate de que el fragmento incluya la sentencia `return` anticipada `_wwpp_order_type !== 'wholesale'` (como se muestra arriba). Sin ella, el filtro se ejecuta también en los pedidos minoristas. Dado que `_wwpp_wholesale_order_type` está vacío para los pedidos minoristas, el asunto mostraría entonces un corchete vacío.
¿Necesitas ayuda?
Si tienes alguna pregunta o encuentras algún problema, estamos aquí para ayudarte.
- Usuarios premium: Abrir un ticket de soporte
- Usuarios gratuitos: Visita nuestro foro comunitario
