Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
Obtener datos de pedidos en un gancho de pedido nuevo

Estoy tratando de enviarme un correo electrónico después de cada pedido realizado. El problema que tengo es que $order->get_total() y get_total_tax devuelven 0 en lugar del valor total real del pedido.

 add_action( 'woocommerce_new_order', 'custom_after_order_created_hook', 12 , 1); function custom_after_order_created_hook($order_id) { $order = new WC_Order($order_id); $with_tax = $order->get_total(); $tax = $order->get_total_tax(); $without_tax = $with_tax - $tax; $to = "test@example.com"; $subject = "New order"; $content = " New order {$order->id} With tax: {$with_tax} Without tax: {$without_tax} Tax: {$tax} "; $status = wp_mail($to, $subject, $content); }

Todos los valores además de $order_id y $order->id se evalúan como 0. $order_id tiene el valor adecuado. Este problema ocurre solo cuando se usa el gancho woocommerce_new_order (también intenté usarlo en una página personalizada; funciona correctamente), lo que me hace dudar.

No estoy seguro de cuál es el problema aquí, ¿alguna parte de mi código es asíncrona?
¿O tal vez se llama a este enlace antes de que el pedido se actualice con el precio pagado/información de impuestos?
¿Qué debo hacer para obtener información de precios aquí?

Gracias.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Este gancho de acción woocommerce_new_order se usa para modificar la función create_order(). Por lo tanto, es mejor que use el gancho de acción woocommerce_thankyou que activará su notificación de correo electrónico personalizada cuando se haya creado el pedido:

 // Tested on WooCommerce versions 2.6+ and 3.0+ add_action( 'woocommerce_thankyou', 'new_order_custom_email_notification', 1, 1 ); function new_order_custom_email_notification( $order_id ) { if ( ! $order_id ) return; // Getting an instance of WC_Order object $order = wc_get_order( $order_id ); $with_tax = $order->get_total(); $tax = $order->get_total_tax(); $without_tax = $with_tax - $tax; $to = "test@example.com"; $subject = "New order"; $content = " New order {$order_id} With tax: {$with_tax} Without tax: {$without_tax} Tax: {$tax} "; wp_mail($to, $subject, $content); }

El código va en el archivo function.php de su tema secundario activo (o tema) o también en cualquier archivo de complemento.

El código está probado y funciona.

Usar el gancho de acción woocommerce_checkout_order_processed en lugar del gancho de acción woocommerce_thankyou también es una buena alternativa, puede ser incluso mejor. Solo tienes que reemplazar:

 add_action( 'woocommerce_thankyou', 'new_order_custom_email_notification', 1, 1 );

Por:

 add_action( 'woocommerce_checkout_order_processed', 'new_order_custom_email_notification', 1, 1 );

Respuesta de trabajo similar: Woocommerce: cómo enviar correos electrónicos personalizados según el tipo de pago


El gancho woocommerce_checkout_order_processed (ubicado en WC_Checkout process_checkout() que también podría ser conveniente para este propósito.

El código fuente del WC_Checkout process_checkout() es interesante para obtener una vista del flujo de compra .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda