/ Плагины / Отключить кнопку Купить (чекбокс)

Отключить кнопку Купить (чекбокс)

26.09.2022

517

Сделаем возможность у некоторых товаров отключать кнопку купить.

Добавляем поле (чекбокс)

// Создание чекбокса Отключение кнопки Купить
add_action( 'woocommerce_product_options_general_product_data', 'add_new_general_fields' );
function add_new_general_fields() {

	global $woocommerce, $post;

	echo '<div class="options_group">';

	woocommerce_wp_checkbox( 
	array( 
		'id'            => '_disable_buy', 
		'wrapper_class' => 'show_if_simple', 
		'label'         => __('Отключить кнопку Купить', 'woocommerce' ), 
		'description'   => __( 'Не выводить в карточке товара кнопку Купить', 'woocommerce' ) 
		)
	);

	echo '</div>';

}

// Сохранение чекбокса Отключение кнопки Купить
add_action( 'woocommerce_process_product_meta', 'add_general_fields_new_save' );
function add_general_fields_new_save( $post_id ){
	if (!empty($_POST['_disable_buy'])) { update_post_meta( $post_id, '_disable_buy', 'yes' ); }
	else { delete_post_meta( $post_id, '_disable_buy' ); }
}

Скрываем кнопку Добавить в корзину в карточке товара

function disable_buy_button() {
	global $product;
	$disable_buy = get_post_meta( $product->get_ID(), '_disable_buy', 1 );
	if (!empty($disable_buy)) {
		remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
	}
}
add_action( 'woocommerce_single_product_summary', 'disable_buy_button' );

Изменяем кнопку В корзину в категориях

Тут не получится отключить хуком, т.к. хук отключает все ссылки у всех товаров.

Сначала добавим к товарам новый класс (disable_buy)

add_filter('post_class', 'disable_buy_button_class');
function disable_buy_button_class($class) {
	global $product;
	$disable_buy = get_post_meta( $product->get_ID(), '_disable_buy', 1 );
	if (!empty($disable_buy)) {
		$class[] = 'disable_buy';
	}	
    return $class;
}

А далее по этому классу настроим jQuery функцию

jQuery(document).ready(function($){	

	// Убрать ссылки В корзину у товаров без кнопки Купить
	$("li.disable_buy.product").each(function() {
		var product_link = $(this).find('span > a').attr("href");
		$(this).find("a.add_to_cart_button").text("Подробнее");
		$(this).find("a.add_to_cart_button").attr("href", product_link);
		$(this).find("a.add_to_cart_button").removeClass("ajax_add_to_cart");
	});

});

Либо можно скрывать кнопку CSS классом, если это визуально позволяет шаблон.

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Трекинг заказа

Трекинг заказа

Рассмотрим такой аспект работы интернет-магазина как трекинг заказа (order tracking), т.е. отслеживание статуса и местоположения заказа. YITH WooCommerce Order Tracking 8000 установок. В бесплатной версии добавляет к заказу (в админке) Читать далее »

Связывание товаров

Связывание товаров

Если товары продаются несколькими частями, но части нужно связать чтобы одну без другой нельзя было приобрести, можно связать такие товары. Как вариант такие товары можно заводить как один товар (в Читать далее »

Массовое изменение метаполей

Массовое изменение метаполей

Известная проблема/неудобство wordpress — обновление метаполей, т.е. чтобы обновить метаполе необходимо войти в запись и обновить ее. Массовое редактирование (например поменять статус записей или т.п.) в данном случае не помогает Читать далее »

Добавить комментарий

Пока нет комментариев. Будь первым!

Отключить кнопку Купить (чекбокс)
Основы jquery
Рекомендации для васОсновы jqueryOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.