Como redirigir automáticamente los productos externos o afiliados de WooCommerce al pinchar en la foto o el título directamente a su enlace [RESUELTO]

Si tienes una tienda de afiliación hecha con WooCommerce, probablemente te puede interesar que al pinchar en un producto, éste te lleve directamente a su enlace externo. De esta forma evitas por un lado tener que crear contenidos para cada producto (y llevar el SEO a nivel de categorías, por ejemplo) y por otro aumentas las conversiones.

Reformando la web de CursosBaratos.Online en 2019 nos surgió a nosotros esta necesidad, y nos llevó algo de tiempo dar con una solución que funcionase con las últimas versiones de WooCommerce, ya que en Internet hay varias alternativas pero están obsoletas. Fue finalmente gracias a adaptar parte de la información que encontramos en Stack Overflow que pudimos hacerlo caminar… y el resultado es espectacular.

¿Qué hay que hacer?

Lo que te voy a enseñar en este post es precisamente a solucionar este problema. Para esto debes añadir simplemente algo de código al archivo functions.php de tu tema. Es súper importante que crees un «child theme» para hacer esto, si no lo haces estos cambios se podrían perder al actualizar el tema. El código es este:

add_action( 'template_redirect', 'redirect_external_products' );
function redirect_external_products() {
    global $post;
    if ( is_singular( 'product' ) && ! empty( $post ) && ( $product = wc_get_product( $post ) ) && $product->is_type( 'external' ) ) {
        wp_redirect( $product->get_product_url() ); 
        exit;
    }
}

function custom_woocommerce_template_loop_product_link_open() {
    echo '<a href="' . get_the_permalink() . '" rel="nofollow">';
}

Con esto debería funcionar. Espero que te sirva. Si tienes alguna duda o mejora sobre este código, puedes dejárnosla en los comentarios. ¡Hasta pronto!