woocommerce_thankyou

Guía del hook woocommerce_thankyou con ejemplos seguros, acceso al pedido y precauciones para evitar procesos duplicados.

Revisado
Compatibilidad
WooCommerce 2.1+; plantilla thankyou.php
Lectura
2 min
Autor
Gabriel — infinit8

woocommerce_thankyou se ejecuta en la página de pedido recibido del checkout clásico y recibe el ID del pedido. Sirve para presentar información adicional, pero no es un disparador fiable para operaciones que deban ocurrir exactamente una vez.

Cuándo se ejecuta

La plantilla checkout/thankyou.php lanza primero el hook específico del método de pago y después woocommerce_thankyou. Si el usuario recarga o vuelve a la URL, el callback puede ejecutarse otra vez.

Ejemplo básico y seguro

Valida el ID, obtiene el pedido y escapa la salida. El objeto puede no existir si la URL es inválida o el pedido ya no está disponible.

i8-thankyou.php
add_action(
    'woocommerce_thankyou',
    function (int $order_id): void {
        if (!$order_id) {
            return;
        }

        $order = wc_get_order($order_id);

        if (!$order instanceof WC_Order) {
            return;
        }

        printf(
            '<p class="i8-order-message">%s</p>',
            esc_html__('Gracias por tu pedido.', 'i8')
        );
    }
);

Evitar procesos duplicados

No envíes datos críticos, descuentes stock manualmente ni crees facturas sin controlar idempotencia. Para procesos de negocio usa cambios de estado del pedido, webhooks o Action Scheduler, según el caso.

Importante

La página de gracias puede recargarse. Mostrar contenido es apropiado; ejecutar una operación irreversible sin marca de control no lo es.

Errores frecuentes

  • Asumir que el hook se ejecuta una sola vez.
  • Usar el ID sin comprobar el pedido.
  • Mostrar datos sensibles sin verificar permisos.
  • Depender de la visita del cliente para completar una integración.

Preguntas frecuentes

¿Se ejecuta una sola vez por pedido?

No. La página puede recargarse o visitarse de nuevo, por lo que cualquier operación debe ser idempotente.

¿Sirve para cambiar el estado del pedido?

Normalmente no es el lugar adecuado. Usa la lógica del método de pago o los hooks de cambio de estado.

Referencias y revisión

Contenido contrastado con documentación oficial. Comprueba siempre el comportamiento en un entorno de pruebas antes de desplegar cambios.