Obtener el id de productos adquiridos al finalizar compra
Ahora solo queda no fallarle y, como mínimo, cumplir sus espectativas.
Una estrategia de marketing muy buena y poco utilizada, es aprovechar la Thank You Page de Finalizar Compra para realizar remarketing. 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?
El código paso a paso
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 order-received:
1 | 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:
1 | 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:
1 | $order_id = intval( str_replace( 'finalizar-compra/order-received/', '', $wp->request ) ); |
Si el slug esta en inglés:
1 | $order_id = intval( str_replace( 'checkout/order-received/', '', $wp->request ) ); |
Y ahora podemos extraer los productos que se adquirieron en esa orden de compra:
1 2 | $order = wc_get_order( $order_id ); $items = $order->get_items(); |
Recorremos el array:
1 2 3 4 5 | 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 product_id. 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 functions.php de nuestro tema activo o del child theme.
El código completo
Para que os resulte más fácil, os lo ponemos completo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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; } } } |
Escribir comentario