Fecha original artículo: 9/07/2017. Actualizado el 11/02/2020
Una de las páginas más desaprovechadas según los expertos es la página de gracias o confirmación después de realizar una compra.

Por defecto WooCommerce nos lleva a una página muy básica, y es una pena, ya que:
- El tráfico que recibe es tráfico de mucha calidad: te acaban de contactar o comprar
- Tienes la oportunidad de decirle al usuario que debe o puede hacer a continuación: registrarse al newsletter, compartir en redes sociales, un cupón de descuento…
Las opciones son muchas y cualquiera será mejor que un simple «gracias»,
¿Cómo redireccionar a la página que nosotros queramos después de una compra en WooCommerce?
Para ello, podemos utilizar un código sencillo donde le indicamos a qué página queremos que redirija una vez realizada la compra:
Sin embargo es posible que a veces necesitemos poder modificar esta redirección en función del producto que el cliente haya comprado, ya sea para una categoría, o un producto en concreto, que por la razón que sea le quieres ofrecer información diferente en el momento de realizar el pedido.
En este código tenemos dos ejemplos, el primero mira si en el pedido hay un producto de la categoría que le indicamos. En el segundo si hay un producto de entre los de la lista de ID’s que hemos puesto.
También se pueden combinar de cualquier forma, o incluso con condiionales negativos, comprobando que un producto no está en el pedido.
Es una forma sencilla de personalizar el proceso de compra con WooCommerce dandole un toque de usabilidad y detalle que los usuarios lo agradeceran y aunque existen plugins para poder hacer estas redirecciones, podemos simplificarlo con un código.
Si necesitas más información sobre como personalizar la página de gracias de WooCommerce, en lugar de crear una redirección, estos dos artículos te pueden ser muy útiles:
https://www.tychesoftwares.com/how-to-customize-the-woocommerce-thank-you-page/
https://nicola.blog/2015/01/21/customize-the-thank-you-page-in-woocommerce/
Hola, muchas gracias por el aporte.
Sabes si es compatible con la ultima versión de wordpress?
muchas graciasssssssss
Hola! Pues diría que sí, pero estos temas delicados siempre es mejor probarlos en un duplicado o sitio en staging por si acaso.
Saludos!
Hola Esther, muchas gracias por el aporte, todo funciona muy bien. Excelente trabajo.
Muchas gracias Jonatán!
Hola! dónde se coloca estos códigos? gracias!
Hola Giuliana,
Normalmente se añaden en el archivo de funciones del tema o tema hijo (functions.php), pero ojo que un error en ese fichero puede hacer que falle toda la web.
Otra opción es usar un plugin para añadir snippets de código, como el que comento aquí: https://www.esthersola.com/reaprovecha-codigo-wordpress-code-snippets/
Saludos!
Hola yo quiero que si compran un producto de una categoria los mande a una pagina pero para las demas categorias quiero que los mande a la pagina de finalizar compra normal.
que enlace debo pocomo hacer que al completar compra sean redirigidos wordpress poner porque puse ejemplo : https://midominio.com/order-received/ y no lleva a ningun lado….
Perdonen mi comentario jaja no me di cuenta que me comi palabras…. cuando compren un producto de alguna otra categoria quiero que sean redirigidos a la pagina normal de finalizar compra.
Hola Erick,
En principio no has de poner ninguna en concreto, simplemente salir de la función si no cumple la condición, por ejemplo:
if ( $cat_in_cart ) {
wp_redirect( ‘https://dominio.com/gracias-musica/’);
}
Saludos!
Esther, te acabas de convertir en mi ídolo. No tengo ni idea de código, pero en dos minutos he podido hacer el cambio que necesitaba.
Un millón de gracias
Jajaja, muchas gracias Benjamín… el siguiente paso es aprender algo de código 😉
Muchas Gracias por el aporte… me está siendo muy útil. Verás estoy montando una web con woocommerce y un plugin llamado PayPerPost. Con este enlazamos un producto con un post y cuando se paga el post es visible. El problema que tengo es que cuando el cliente compra se queda en la página de finalizar compra y me gustaría que al terminar fuera redirigido al post donde está el contenido a ver.
Muchas gracias de antemano y un saludo.
Hola Jose Daniel, no conozco este plugin, pero quizás deberías contactar con su soporte para ver si te pueden ayudar, ya que dependerá de su funcionalidad y lo que permita realizar.
Saludos!
¡Hola Esther!
Estoy configurando una tienda con 7-8 productos y necesito que cada producto redirija a una pagina diferente. Eso es posible?
Gracias!
Hola Cristian,
Sí, si quieres hacerlo con código deberías adaptar el código para comprobar los productos en el carrito y un condicional para redireccionar en cada caso a la página correspondiente.
En este caso igual te es más práctico utilizar un plugin como WC Thanks Redirect
Saludos!
Muchas Gracias Esther
Estoy empezando en Worpress y me sirvio mucho.
Gracias! Me alegra que te haya servido.
Hola, gracias por su noble aportación
me ha servido.
Solo tengo una duda, para redirigir productos cada producto que tenga a diferentes paganías debería crear snippets diferentes para ello o en el mismo snippet creado se puede lograr?
Soy nueva programando en php y no se jugar con las variables para poder lograrlo en el mismo snippet.
Saludos.
Hola Guadalupe!
Puedes aprovechar el mismo snippet. En el ejemplo hay el código donde indicas un array de productos ($product_ids = array( 37, 25, 50 ); // lista de productos por ID ), puedes sustituirlo y diferenciar por producto en concreto, aunque necesitas algo de práctica con el PHP 😉
Saludos!
Hola Esther,
Estoy usando tu código para redirigir a una página de agradecimiento después de que el cliente haga un pedido, pero me gustaría poder redirigir a una página de agradecimiento u otra en función del método de pago. En contacto tarjeta o transferencia bancaria.
Gracias.
Hola Sergi,
Podrías hacer un condicional como en el código del ejemplo, pero comprobando el método de pago, que puedes obtenerlo con $order->get_payment_method();
Saludos!
Hola Esther. Gracias por tu respuesta, pero si el código inicial es este (abajo) no veo donde poner tu [$order->get_payment_method();] exactamente
query_vars[‘order-received’] ) ) {
wp_redirect( ‘http://www.yoururl.com/gracias/’ );
exit;
}
}
?>
Hola Esther. Como todos te doy las gracias por tu aportación, yo estoy utilizando este trozo de código para que según qué producto compren les redirija a una pagina o a otra, en mi caso solo tengo 2 productos:
add_action( ‘woocommerce_thankyou’, function ($order_id) {
$order = wc_get_order( $order_id );
$in_order = false;
$products = array(108);
foreach ($order->get_items() as $product) {
if (in_array($product->get_product_id(), $products)) {
$in_order = true;
} break;
}
if ( ! $order->has_status( ‘failed’ )) {
if ($in_order) {
wp_safe_redirect(‘http://www.avempruebas.es.mialias.net/bienvenidx-a-avem/’);
exit;
} else {
wp_safe_redirect(‘http://www.avempruebas.es.mialias.net/bienvenido/’);
exit;
}
}
});
Ahora bien, mi pregunta es la siguiente… Si quiero que una vez hayan comprado, finalicen el proceso de compra y les haya redirigido a la pagina que corresponda LES CIERRE LA SESIÓN DE LA CUENTA…??? Como puedo hacer esto? Se te ocurre algo??
Mil gracias anticipadas.
Un saludo!!
Hola Eli,
Teóricamente podrías hacerlo con un wp_logout(); antes del redirect, pero ten en cuenta que en ese caso no les podrá mostrar información sobre su pedido ni nada.
Saludos!
hola Esther, muchas gracias por tu aporte, una consulta como puedo hacer, para cuando el cliente realice una compra de un producto de una categoría es especifica me envié los datos del cliente y la compra a laravel
Hola María!
Pues la verdad es que ni idea… no utilizo Laravel. Igual en algún foro específico de ese lenguaje te pueden ayudar más.
Saludos!