es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrar mensaje en las notificaciones de correo electrónico de WooCommerce cuando el pedido contenga productos en espera de stock.

Estoy tratando de mostrar un mensaje específico en el correo electrónico de confirmación del pedido SI uno de los varios productos de su pedido está en espera.

Estoy luchando para obtener la función correcta para escanear todos los productos y hacer que mi booleano funcione.

Mi código actual:

add_action('woocommerce_email_after_order_table', 'backordered_items_checkout_notice_email', 20, 4);
function backordered_items_checkout_notice_email($order, $sent_to_admin, $plain_text, $email) {
  $found2 = false;
  foreach ($order->get_items() as $item) {
    if ($item['data']->is_on_backorder($item['quantity'])) {
      $found2 = true;
      break;
    }
  }

  if ($found2) {
    if ($email->id == 'customer_processing_order') {echo ' <strong>'.__('⌛ One or several products are Currently out of stock. <br>Please allow 2-3 weeks for delivery.', 'plugin-mve').'</strong><br>';}
  }
}

Con este código, cuando hago clic en “Pedido”, la página simplemente se congela y no se envía ningún correo electrónico. Pero obtengo el pedido en el backend.

¿Alguien puede ayudarme a solucionarlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema con tu código que está haciendo que la página se congele y evitando que se envíe el correo electrónico. Una solución potencial podría ser utilizar el gancho woocommerce_email_order_meta en lugar de woocommerce_email_after_order_table. Esto te permitiría agregar el mensaje de pedido pendiente en la sección de metadatos del pedido del correo electrónico, en lugar de directamente debajo de la tabla.

    Aquí tienes una versión actualizada de tu código utilizando woocommerce_email_order_meta:

    add_action( 'woocommerce_email_order_meta', 'backordered_items_checkout_notice_email', 20, 4 );
    
    function backordered_items_checkout_notice_email( $order, $sent_to_admin, $plain_text, $email ) {
        $found2 = false;
        foreach ( $order->get_items() as $item ) {
            if ( $item['data']->is_on_backorder( $item['quantity'] ) ) {
                $found2 = true;
                break;
            }
        }
    
        if ( $found2 ) {
            echo '<p><strong>' . __( '⌛ Uno o varios productos están actualmente fuera de stock. Por favor, permite 2-3 semanas para la entrega.', 'plugin-mve' ) . '</strong></p>';
        }
    }
    

    Esto debería agregar el mensaje de pedido pendiente en la sección de metadatos del correo electrónico, evitando los problemas con el gancho anterior.

    Si sigues experimentando problemas después de probar esta solución, puede que valga la pena revisar los registros de errores o solicitar la ayuda de un desarrollador para más asistencia.

Comments are closed.