Asunto personalizado para la notificación de Nuevo pedido por correo electrónico en Woocommmerce

En Woocommerce me gustaría configurar el producto comprado en el asunto del correo electrónico “nuevo pedido”, algo como esto: New Order - [{product_name}] ({order_number}) - {order_date}

Entiendo que no se puede usar product_name probablemente debido a que hay varios productos. Hay una manera en la que todavía puedo hacer esto filtrando el producto solicitado o simplemente permitiendo múltiples productos, ya que no hay muchos pedidos múltiples.

Muy nuevo para modificar el código del tema, pero cualquier ayuda sería muy apreciada.

La configuración de correo electrónico para “Nuevo pedido” que el sujeto debe ser (como en su pregunta):
New Order - [{product_name}] ({order_number}) - {order_date}

En el siguiente código, sustituyo {product_name} por los nombres de los productos (separados por un guión), ya que una orden puede tener muchos artículos …

Esta función personalizada enganchada en woocommerce_email_subject_new_order hará el truco:

 add_filter( 'woocommerce_email_subject_new_order', 'customizing_new_order_subject', 10, 2 ); function customizing_new_order_subject( $formated_subject, $order ){ // Get an instance of the WC_Email_New_Order object $email = WC()->mailer->get_emails()['WC_Email_New_Order']; // Get unformatted subject from settings $subject = $email->get_option( 'subject', $email->get_default_subject() ); // Loop through order line items $product_names = array(); foreach( $order->get_items() as $item ) $product_names[] = $item->get_name(); // Set product names in an array // Set product names in a string with separators (when more than one item) $product_names = implode( ' - ', $product_names ); // Replace "{product_name}" by the product name $subject = str_replace( '{product_name}', $product_names, $subject ); // format and return the custom formatted subject return $email->format_string( $subject ); } 

El código va en el archivo function.php de su tema secundario activo (o tema activo).

Probado y funciona.


Obtendrás algo como esto:

introduzca la descripción de la imagen aquí