Woocommerce — скрыть кнопку "Добавить в корзину" для бесплатных товаров
Я использую WooCommerce и ищу способ скрыть кнопку "Добавить в корзину" на
странице товара ЕСЛИ товар бесплатный — я делаю большой CSV-импорт, и некоторые цены товаров установлены в ноль. Мне нужно просто скрыть кнопку "добавить в корзину" для этих товаров, чтобы их нельзя было купить.
Уже спрашивал об этом на странице поддержки, но без успеха.
С уважением
Посмотрите на начало шаблонов добавления в корзину в WooCommerce. В начале там есть проверка, определяющая, можно ли приобрести товар. Внутри метода is_purchasable()
в классе продукта находится фильтр. По умолчанию товар нельзя приобрести, если цена вообще не установлена, но это можно расширить, чтобы включить товары с ценой, установленной в 0.
function wpa_109409_is_purchasable( $purchasable, $product ){
if( $product->get_price() == 0 )
$purchasable = false;
return $purchasable;
}
add_filter( 'woocommerce_is_purchasable', 'wpa_109409_is_purchasable', 10, 2 );

@helgatheviking, ваши многочисленные ответы здесь бесценны. Я продолжаю находить их снова и снова! Спасибо!

Пожалуйста, @peteroak, рад, что они оказались полезными. Я провожу здесь слишком много времени :) (сейчас больше на SO в теге WooCommerce, но все равно тут)

ДА! Я добавлял кучу условных проверок в файлы шаблонов, чтобы проверить специальное значение и определить, может ли пользователь купить товар. Вместо этого использовал этот фильтр (который я как-то упустил) — РЕШЕНО! Спасибо, Кэти.

Привет, @helgatheviking, можно ли добавить описание товара или сообщение на странице для тех конкретных товаров, у которых скрыта корзина?

Я нашел решение, используя хук "woocommerce_single_product_summary" с проверкой "$product->is_purchasable()"

По какой-то причине наш сайт не отображал кнопку "Добавить в корзину" для товара с ценой 0.00, поэтому мы добавили этот код, и теперь кнопка добавляется к товарам, у которых вообще не указана цена (мы бы предпочли не показывать кнопку в этом случае). Есть предложения? add_filter( 'woocommerce_is_purchasable', 'wpa_109409_is_purchasable', 10, 2 ); function wpa_109409_is_purchasable( $purchasable, $product ){ if( $product->get_price() >= 0.00) $purchasable = true; return $purchasable; }

Насколько я понял вашу проблему... WooCommerce имеет опцию, когда вы не указываете цену, кнопка вообще не отображается...
Ваш товар становится просто обычной галереей/каталогом...
Если это то, что вам нужно... возможно, самым простым способом будет редактирование вашего csv-файла... просто найдите и замените нули на пустые значения...
