Eliminar el enlace del producto en Woocommerce
Me gustaría eliminar el enlace de los listados de productos de Woocommerce. No necesito que el usuario vea las páginas de detalles del producto, vamos a usar Quick View en su lugar. De todas formas, he estado buscando y todo lo que he encontrado está desactualizado. Este es el archivo actual content-product.php
: https://github.com/woothemes/woocommerce/blob/master/templates/content-product.php y no hay etiquetas de anclaje para simplemente eliminarlas.
Posiblemente necesite un hook pero no estoy seguro de qué hacer. Probé algunos pero el enlace seguía ahí. Por ejemplo, esto no funcionó cuando lo agregué a mi functions.php:
add_filter('woocommerce_template_loop_product_link_open','mbc_remove_link_on_thumbnail' );
function mbc_remove_link_on_thumbnail($html){
return strip_tags($html,'<img>');
}
También probé esto que no funcionó pero siento que está cerca:
remove_action ('woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10);
remove_action ('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5);
No estoy seguro si estoy en el camino correcto. ¡Cualquier ayuda sería apreciada!

Una forma mejor y más segura de hacer esto es eliminando las acciones de apertura y cierre del enlace. Esto evitará efectos secundarios como la desaparición del botón de añadir al carrito.
// Elimina la acción que abre el enlace del producto en el bucle de productos
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
// Elimina la acción que cierra el enlace del producto en el bucle de productos
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
Puedes añadir este código a tu archivo functions.php

La forma en que lo hice fue tomar una copia de content-product.php y pegarla en la raíz de la carpeta de tu tema.
Comenta
do_action( 'woocommerce_before_shop_loop_item_title' );
y
do_action( 'woocommerce_after_shop_loop_item' );
Rápido y sencillo, pero funcionó para mí.

Quizás celebré demasiado pronto. Perdí el botón "Añadir al carrito" de esta manera. ¿Te ha pasado esto a ti?

Encontré esto.
/**
* @snippet Deshabilitar Enlace a Productos en el Loop
* @how-to Ver tutorial @ http://businessbloomer.com/?p=19055
* @sourcecode http://businessbloomer.com/?p=19916
* @author Rodolfo Melogli
* @testedwith WooCommerce 2.5.2
*/
// Cerrar </a> justo después de que se abre antes del ítem del producto
add_action( 'woocommerce_before_shop_loop_item_title','bbloomer_close_permalink', 10 );
function bbloomer_close_permalink() {
?>
</a>
<?php
}
// Abrir <a> justo antes de que se cierre después del ítem del producto
add_action( 'woocommerce_after_shop_loop_item_title','bbloomer_open_atag', 11);
function bbloomer_open_atag() {
?>
<a>
<?php
}
/**
* ¡Explicación del hack!
*
* Antes del ítem del loop, se abre un enlace...
* Después del ítem del loop, se cierra un enlace...
* Básicamente estamos añadiendo un cierre y apertura para que
* ningún contenido quede envuelto en <a>enlace</a>
*
* Revisa wc-template-functions.php líneas 545-556:
*
* function woocommerce_template_loop_product_link_open() {
* echo '<a href="' . get_the_permalink() . '">';
* }
*
* function woocommerce_template_loop_product_link_close() {
* echo '</a>';
* }
*
*/
Fuente: http://businessbloomer.com/woocommerce-disable-link-to-product-loop/

Por favor, agrega una explicación de cómo responde a la pregunta... simplemente soltar el código no es bueno.

Tienes razón. Es mi primera vez en Stack.
He intentado muchos 'filter', 'remove_action_', para eliminar este ancla.
El código que estoy 'soltiando' aquí, me salvó el día. Puedes obtener más información en la fuente original:
http://businessbloomer.com/woocommerce-disable-link-to-product-loop/

La mejor práctica sería agregar una sola línea de código en tu archivo functions.php
.
remove_action('woocommerce_before_shop_loop_item' ,
'woocommerce_template_loop_product_link_open' , 10);
Colócalo en cualquier archivo de funciones. El enlace al producto desaparecerá.
