Удаление ссылки с товара WooCommerce

20 янв. 2016 г., 17:52:47
Просмотры: 38.1K
Голосов: 4

Я хочу удалить ссылку из списка товаров WooCommerce. Мне не нужно, чтобы пользователь видел страницы с подробной информацией о товаре, вместо этого мы будем использовать Quick View. В любом случае, я искал решение, но всё, что я нашел, устарело. Вот текущий файл content-product.php: https://github.com/woothemes/woocommerce/blob/master/templates/content-product.php, и в нем нет тегов привязки, которые можно было бы просто удалить.

Возможно, мне нужен хук, но я не уверен, что делать. Я пробовал несколько вариантов, но ссылка всё равно оставалась. Например, это не сработало при добавлении в 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>');
}

Я также пробовал следующий вариант, который не сработал, но, кажется, близок к решению:

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);

Я не уверен, правильным ли путём иду. Буду благодарен за любую помощь!

0
Все ответы на вопрос 5
1
11

Более правильный и безопасный способ сделать это - удалить действия открытия и закрытия ссылки. Это предотвратит побочные эффекты, такие как исчезновение кнопки добавления в корзину.

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 );

Вы можете добавить этот код в свой файл functions.php

5 сент. 2017 г. 04:46:41
Комментарии

А что делать, если это не работает? Честно говоря, я не могу найти, где они добавляют эти ссылки... это чертовски раздражает

ii iml0sto1 ii iml0sto1
9 сент. 2020 г. 20:33:27
2

Я сделал это, скопировав файл content-product.php и вставив его в корневую папку вашей темы.

Закомментируйте

do_action( 'woocommerce_before_shop_loop_item_title' );

и

do_action( 'woocommerce_after_shop_loop_item' );

Быстро и грязно, но у меня сработало.

20 янв. 2016 г. 18:30:17
Комментарии

Возможно, я поспешил с выводами. Таким образом я потерял кнопку "Добавить в корзину". У вас такое случалось?

amandathewebdev amandathewebdev
20 янв. 2016 г. 21:44:22

А, я не использую кнопку добавления в корзину. На моем сайте используется плагин для функции "Запросить цену". Я только что отключил плагин, и да, моя кнопка добавления в корзину тоже пропала. Боюсь, придется начинать все заново.

MrFox MrFox
21 янв. 2016 г. 12:44:18
2

Я нашел это.

/**
 * @snippet       Отключение ссылок на товары в цикле
 * @how-to        Смотрите обучающее видео @ http://businessbloomer.com/?p=19055
 * @sourcecode    Исходный код @ http://businessbloomer.com/?p=19916
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 2.5.2
 */
// Закрываем тег </a> сразу после его открытия перед элементом товара

add_action( 'woocommerce_before_shop_loop_item_title','bbloomer_close_permalink', 10 );
function bbloomer_close_permalink() {
?>
</a>
<?php
}

// Открываем тег <a> непосредственно перед закрытием после элемента товара

add_action( 'woocommerce_after_shop_loop_item_title','bbloomer_open_atag', 11);
function bbloomer_open_atag() {
?>
<a>
<?php
}

/**
 * Объяснение хака!
 *
 * Перед элементом цикла открывается ссылка...
 * После элемента цикла ссылка закрывается...
 * Мы просто добавляем закрытие и открытие, чтобы
 * никакое содержимое не оборачивалось в <a>ссылку</a>
 * 
 * Проверьте файл wc-template-functions.php строки 545-556:
 *
 * function woocommerce_template_loop_product_link_open() {
 *  echo '<a href="' . get_the_permalink() . '">';
 * }
 *
 * function woocommerce_template_loop_product_link_close() {
 *  echo '</a>';
 * }
 *
 */

Источник: http://businessbloomer.com/woocommerce-disable-link-to-product-loop/

1 июл. 2016 г. 22:57:57
Комментарии

Пожалуйста, добавьте объяснение, как это отвечает на вопрос.. просто сбрасывать код — это нехорошо.

bravokeyl bravokeyl
2 июл. 2016 г. 07:57:51

Вы правы. Впервые на Stack.

Я пробовал множество 'filter', 'remove_action_' чтобы убрать эту ссылку.

Код, который я "сбрасываю" здесь, спас мой день. Вы можете получить больше информации в первоисточнике:

http://businessbloomer.com/woocommerce-disable-link-to-product-loop/

Gabriel Darezzo Gabriel Darezzo
21 июл. 2016 г. 23:47:03
1

Лучшей практикой будет добавление одной строки кода в ваш файл functions.php.

remove_action('woocommerce_before_shop_loop_item' , 
'woocommerce_template_loop_product_link_open' , 10);

Поместите этот код в любой файл функций. Ссылка на товар исчезнет.

12 нояб. 2019 г. 11:04:22
Комментарии

Также требуется remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );, иначе останется лишний закрывающий тег ссылки.

authentictech authentictech
18 мая 2020 г. 17:16:58
0

Я просто удалил это с помощью jQuery вот так:

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