Как удалить кнопку «Добавить в корзину» в WooCommerce
Сегодня разберёмся как удалить кнопку «Добавить в корзину» в плагине WooCoommerce.
Видеоверсия
По умолчанию в WooCommerce кнопка «Добавить в корзину» отображается в списке товаров и на странице товара.
За вывод товара в списке отвечает шаблон content-product.php, а за вывод одиночного товара — content-single-product.php.
Находим места вывода кнопки в шаблонах: в content-product.php — это функция woocommerce_template_loop_add_to_cart, прикреплённая к действию woocommerce_after_shop_loop_item.
А в content-single-product.php — woocommerce_template_single_add_to_cart, прикреплённая к woocommerce_single_product_summary.
Для удаления кнопки «Добавить в корзину» нам необходимо открепить функции от действий. Вставляем код любым удобным способом
1 2 |
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); |
и проверяем результат.
При необходимости мы можем ограничить область действия кода, например, удалить кнопку только для определённого товара.
Удаление кнопки «Добавить в корзину» для определённого товара
Удалим кнопку «Добавить в корзину» для товара с ID равным 20 (на моем сайте-примере он называется «Тест 1»). Для этого модифицируем наш код в следующий вид:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function remove_add_to_cart() { if (get_the_ID() == 20) { remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); } else { add_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart'); } } add_action('woocommerce_after_shop_loop_item', 'remove_add_to_cart', 5); function remove_single_add_to_cart() { if (get_the_ID() == 20) { remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); } else { add_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30); } } add_action('woocommerce_single_product_summary', 'remove_single_add_to_cart', 25); |
и проверяем результат.
Также для удаления кнопки «Добавить в корзину» для определённого товара мы можем воспользоваться фильтром woocommerce_is_purchasable:
1 2 3 4 5 |
function remove_product_is_purchasable($is_purchasable) { return (get_the_ID() == 20 ? false : $is_purchasable); } add_filter('woocommerce_is_purchasable', 'remove_product_is_purchasable'); |
В этом случае вместо кнопки «В корзину» отобразится ссылка «Подробнее».