Eliminar el enlace del producto en Woocommerce

20 ene 2016, 17:52:47
Vistas: 38.1K
Votos: 4

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!

0
Todas las respuestas a la pregunta 5
1
11

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

5 sept 2017 04:46:41
Comentarios

¿Y qué haces cuando eso no funciona? Honestamente no puedo encontrar dónde añaden estos enlaces... es súper molesto

ii iml0sto1 ii iml0sto1
9 sept 2020 20:33:27
2

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í.

20 ene 2016 18:30:17
Comentarios

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

amandathewebdev amandathewebdev
20 ene 2016 21:44:22

Ah, yo no estoy usando el botón de añadir al carrito. Mi sitio usa un plugin para Solicitar Presupuesto en su lugar. Acabo de desactivar el plugin y sí, mi botón de añadir al carrito también ha desaparecido. Me temo que hay que volver a empezar.

MrFox MrFox
21 ene 2016 12:44:18
2

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/

1 jul 2016 22:57:57
Comentarios

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

bravokeyl bravokeyl
2 jul 2016 07:57:51

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/

Gabriel Darezzo Gabriel Darezzo
21 jul 2016 23:47:03
1

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á.

12 nov 2019 11:04:22
Comentarios

También necesita remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 ); de lo contrario habrá una etiqueta de cierre de anclaje perdida.

authentictech authentictech
18 may 2020 17:16:58
0

Lo eliminé con jQuery de esta manera:

<script>
jQuery(document).ready(function(){
    jQuery('li.product a.woocommerce-loop-product__link').removeAttr('href');
});
</script>
26 may 2021 15:20:07