Удалить ссылку на продукт Woocommerce
Я хотел бы удалить ссылку из списков продуктов Woocommerce. Мне не нужно, чтобы пользователь видел страницы сведений о продукте, вместо этого мы будем использовать Быстрый просмотр. В любом случае, я искал, и все, что я нашел, устарело. Это текущий файл 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);
Я даже не уверен, на правильном ли я пути. Любая помощь будет признательна!
4 answers
Способ, которым я это сделал, состоял в том, чтобы сделать копию content-product.php и вставьте его в корень папки вашей темы.
Прокомментировать
do_action( 'woocommerce_before_shop_loop_item_title' );
И
do_action( 'woocommerce_after_shop_loop_item' );
Быстро и грязно, но это сработало для меня.
Лучший и безопасный способ сделать это - удалить действия открыть и закрыть ссылку. Это предотвратит побочные эффекты, такие как исчезновение кнопки "Добавить в корзину".
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
Я нашел это.
/**
* @snippet Disable Link to Products @ Loop
* @how-to Watch tutorial @ http://businessbloomer.com/?p=19055
* @sourcecode http://businessbloomer.com/?p=19916
* @author Rodolfo Melogli
* @testedwith WooCommerce 2.5.2
*/
// Close </a> tag just after it opens before product item
add_action( 'woocommerce_before_shop_loop_item_title','bbloomer_close_permalink', 10 );
function bbloomer_close_permalink() {
?>
</a>
<?php
}
// Open <a> tag just before it closes after product item
add_action( 'woocommerce_after_shop_loop_item_title','bbloomer_open_atag', 11);
function bbloomer_open_atag() {
?>
<a>
<?php
}
/**
* Explanation for the hack!
*
* Before the loop item, a link opens...
* After the loop item, a link closes...
* We're basically adding a close and open so that
* no content gets wrapped into <a>link</a>
*
* Check wc-template-functions.php lines 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/
Наилучшей практикой было бы использовать одну строку кода в вашем файле functions.php
.
remove_action('woocommerce_before_shop_loop_item' ,
'woocommerce_template_loop_product_link_open' , 10);
Поместите его в любой файл функций. Ссылка на продукт исчезнет.