Nos han pedido recientemente, que el enlace de algunos de los productos de su tienda WooCommerce, vaya directamente a una página externa.
WooCoomerce tiene algo parecido, los productos externos o de afiliados, pero para ir al enlace tienes que entrar en el producto. La idea es que al pinchar en la imagen de cualquier página donde esté listado el producto, esta te lleve al enlace externo.

Cómo enlazar productos de WooCommerce con páginas externas.
El proceso consta de dos pasos.
Lo primero es que, en nuestra solución (mencionaremos otras) creemos los productos como externos con la opción de producto de WooCommerce y pongamos ahí la url.
Nos ha parecido más sencillo y cómodo para los usuarios así.
La segunda es crear un Snippet (como siempre puedes editar functions.php de tu tema hijo también) que detecte si son productos externos y cambie la url por la personalizada.
Os dejamos este posible código:
add_filter( ‘woocommerce_loop_product_link’, ‘cambiar_permalink_prod_externo’, 99, 2 );
function cambiar_permalink_prod_externo ( $link, $product ) {
$this_product_id = $product->get_id();
if ($product->is_type( ‘external’ ))$link = $product->add_to_cart_url();
return $link;
}
Este Snippet podemos modificarlo de muchas maneras:
- Cambiar el enlace sólo para unos artículos (ponemos como ejemplo un enlace interno):
if( $this_product_id=== 25 ) $link= '/enlaceinterno';
return$link;
- Poniendo un campo personalizado en el producto, por ejemplo con ACF, y su valor como URL.
Espero que os sirva.
Mejora 2021.
Un cliente nos pidió que los enlaces externos se abrieran en una nueva pestaña. Aquí tenéis la modificación.
add_filter( 'woocommerce_loop_product_link', 'cambiar_permalink_prod_externo', 99, 2 );
function cambiar_permalink_prod_externo ( $link, $product ) {
$this_product_id = $product->get_id();
if ($product->is_type( 'external' ))
{$link = esc_url($product->add_to_cart_url());
}
return $link;
}
if ( ! function_exists( 'woocommerce_template_loop_product_link_open' ) ) {
/**
* Insert the opening anchor tag for products in the loop.
*/
function woocommerce_template_loop_product_link_open() {
global $product;
$link = apply_filters( 'woocommerce_loop_product_link', get_the_permalink(), $product );
$link_target = $product->is_type( 'external' ) ? '_blank' : '_self';
echo '<a target="' . esc_attr( $link_target ).'" href="' . esc_url( $link ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
}
}
Os recomendamos los siguientes productos relacionados con la informática:
Lo que has puesto no resuelve que al darle a la imagen o título del artículo te lleve al enlace afiliado en vez de a la pagina del artículo, sabes una forma de hacer eso? gracias.