Отключить кнопку добавления в корзину, когда товар закончился

3 окт. 2017 г., 15:49:18
Просмотры: 20.5K
Голосов: -1

Я хочу отключить кнопку 'Добавить в корзину', когда товар отсутствует в наличии, используя PHP код или настройки администратора WooCommerce.

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

Вот несколько плагинов, которые предоставляют возможность скрыть кнопку "Добавить в корзину" на странице магазина и странице отдельного товара в WooCommerce:

[ https://wordpress.org/plugins/hide-add-to-cart-button/ ]

[ https://wordpress.org/plugins/remove-add-to-cart-woocommerce/ ]

Эти плагины выполняют следующие функции:

1) Скрывают кнопку "Добавить в корзину" на странице товара.
2) Скрывают кнопку "Добавить в корзину" на странице категории.
3) Скрывают кнопку "Добавить в корзину" на главной странице и всех других страницах.

Также вы можете скрыть кнопку, добавив следующую функцию в файл functions.php:

/*
 * Переопределение через functions.php
 **/
if (!function_exists('woocommerce_template_loop_add_to_cart')) {
    function woocommerce_template_loop_add_to_cart() {
        global $product;
        if ( ! $product->is_in_stock() || ! $product->is_purchasable() ) return;
        woocommerce_get_template('loop/add-to-cart.php');
    }
}
3 окт. 2017 г. 16:34:39
0

Вместо переопределения функции лучше использовать фильтр woocommerce_is_purchasable.

add_filter( 'woocommerce_is_purchasable', 'vna_is_purchasable', 10, 2 );
function vna_is_purchasable( $purchasable, $product ){
    return true || false; // в зависимости от вашего условия
}
3 окт. 2017 г. 17:31:17
0

Я столкнулся с этим вопросом, помогая другу. Не будучи разработчиком WordPress, не говоря уже о WooCommerce, мне все же удалось найти решение без написания PHP, только с помощью CSS.

Похоже, WooCommerce хорошо справляется с "преобразованием" многих свойств товара в CSS-классы, которые затем присваиваются HTML-контейнерам. Не уверен, связано ли это с темой, но в моем случае некоторые контейнеры получили класс "instock", когда товар был в наличии, и "outofstock", когда товара не было в наличии.

Когда я это заметил, мне не потребовалось много времени, чтобы придумать несколько CSS-правил для:

  1. Скрытия кнопки
  2. Отображения сообщения вместо кнопки с использованием псевдоэлементов CSS и свойства content
  3. Сделать часть плитки товара полупрозрачной, чтобы они выглядели более "неактивными"

Я не советовал бы это для продакшн-кода в большой компании, но в моем случае это сработало достаточно хорошо. И это работает с товарами, имеющими вариации — они получают класс "outofstock" только когда все вариации отсутствуют в наличии.

Я не буду публиковать код, так как, как я уже сказал, я не эксперт и не могу сказать, является ли мой HTML "универсальным для WooCommerce" или связан с используемой темой, или даже полностью кастомным (я обычно не занимаюсь созданием и управлением сайта), но все же думаю, что это может помочь, так как мне это очень помогло.

21 апр. 2021 г. 17:18:21
0

Чтобы убрать кнопку "Добавить в корзину" со страницы определенного товара, вы можете добавить этот код в файл functions.php (находится в папке темы):

add_filter('woocommerce_is_purchasable', 'wpblog_specific_product');
function wpblog_specific_product($purchaseable_product_wpblog, $product) {
return ($product->id == specific_product_id (512) ? false :     $purchaseable_product_wpblog);
}

Источник: https://www.wpblog.com/add-to-cart-button-in-woocommerce-store/

2 нояб. 2017 г. 09:23:41
0
-1

Я думаю, вы можете использовать следующий сниппет:

add_action( 'woocommerce_after_shop_loop_item', function() {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
};
3 июн. 2019 г. 15:13:46