CMS Woocommerce WordPress

[WordPress][WooCommerce] Redireccionar página al finalizar pedido según el producto que se compre

[titulo]Obtener el id de productos adquiridos al finalizar compra[/titulo] [subraya_rosa]Un cliente que ya ha realizado una compra es el mejor activo que podemos tener:[/subraya_rosa] Le ha interesado nuestro producto, ha cedido sus datos y ha generado un perfil de gustos.

Ahora solo queda no fallarle y, como mínimo, cumplir sus espectativas.

Una estrategia de marketing muy buena y poco utilizada, es [subraya_verde]aprovechar la Thank You Page de Finalizar Compra para realizar remarketing.[/subraya_verde] A esta página se accede tras realizar el pago, y normalmente WooCommerce la utiliza para mostrar un resumen de compra.

¿Por qué no darle una vuelta de tuerca y mostrar productos o promociones relacionadas que le inciten a volver pronto? Esta estrategia, muy utilizada en webs como JustEat o Booking, da resultados muy buenos, pero para ser realmente efectiva tenemos que saber qué mostrar de toda nuestra tienda.

Si el cliente ha adquirido unas zapatillas deportivas, tal vez podríamos mostrarle calcetines y camisetas técnicas, relojes deportivos, cronómetros…

¿Y cómo lo hacemos?

 

[titulo]El código paso a paso[/titulo]

Tenemos que indicar a WooCommerce que el código se ejecutará justo tras la compra. Para ello nos aprovechamos de la url que devolverá el plugin y buscamos que contenga [codigo]order-received[/codigo]:

if ( ! is_wc_endpoint_url( 'order-received' ) ) return;

Después conectamos con las funciones de WordPress para poder hacer uso de su flujo de datos:

global $wp;

El siguiente paso es extraer el ID de la orden, que también lo podemos extraer de la url.

Si el slug está en español:

$order_id =  intval( str_replace( 'finalizar-compra/order-received/', '', $wp->request ) );

Si el slug esta en inglés:

$order_id =  intval( str_replace( 'checkout/order-received/', '', $wp->request ) );

Y ahora podemos extraer los productos que se adquirieron en esa orden de compra:

$order = wc_get_order( $order_id );
$items = $order->get_items();

Recorremos el array:

 foreach ( $items as $item ) {
        $product_id = $item->get_product_id(); //Para el id de producto
        $product_name = $item->get_name(); //Para el nombre de producto
        $product_variation_id = $item->get_variation_id(); //Para la variación si es un producto variable
}

En nuestro caso particular emplearemos únicamente el [codigo]product_id[/codigo]. Y realizaremos un redireccionamiento en cuanto encontremos que se ha adquirido algún producto de los que vamos a usar en nuestro remarketing.

Así que en lugar de lo anterior, nosotros haremos:

 foreach ( $items as $item ) {
        $product_id = $item->get_product_id();

        if ($product_id == 2700){
            wp_redirect( home_url( '/pediatra-online-consulta-interactiva/' ) );
            break;
        }

        if ($product_id == 2564){
            wp_redirect( home_url( '/pediatra-online-enviar-email/' ) );
            break;
        } 
    }

 

¡Ya ya está! Solo queda envolverlo todo en una función, añadirle en enque y subirlo al archivo [codigo]functions.php[/codigo] de nuestro tema activo o del child theme.

 

[titulo]El código completo[/titulo]

Para que os resulte más fácil, os lo ponemos completo:

add_action( 'template_redirect', 'wc_custom_redirect_after_purchase' );
function wc_custom_redirect_after_purchase() {
    if ( ! is_wc_endpoint_url( 'order-received' ) ) return;


    global $wp;
    
    $order_id =  intval( str_replace( 'finalizar-compra/order-received/', '', $wp->request ) ); // ID de la orden
    $order = wc_get_order( $order_id ); 

    $items = $order->get_items();

    foreach ( $items as $item ) {
        $product_id = $item->get_product_id();

        if ($product_id == 2700){
            wp_redirect( home_url( '/pediatra-online-consulta-interactiva/' ) );
            break;
        }

        if ($product_id == 2564){
            wp_redirect( home_url( '/pediatra-online-enviar-email/' ) );
            break;
        } 
    }
   
}

 

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

1 Comentario

Haz clic aquí para dejar tu comentario

  • Gracias por tu post me ha sido de mucha ayuda sali de ciertas dudas, ahora si yo quisiera mostrar el checkout y luego de unos segundos redirigir a una pagina de agradecimiento personalizada?