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

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

HIT

26.09.2022

1317

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

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

// Создание чекбокса Отключение кнопки Купить
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 классом, если это визуально позволяет шаблон.

[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Общая библиотека мультисети

Общая библиотека мультисети

При создании сети (multisite) сайтов возникла проблема с медиабиблиотекой. Проблема состояла в том что главный сайт уже долгое время функционирует, на нем более 500 товаров с несколькими изображениями в каждом. Читать далее »

Оформление заказа

Оформление заказа

Страница оформления плагина woocommerce имеет определенную структуру и функционал. Но данная структура не совсем удобна. Доработаем страницу оформления, разбив на логические блоки: Заказ, Доставка, Форма оплаты, Информация о заказчике и Читать далее »

/
Композитный товар

Композитный товар

Тип товар при котором состав товара собирается из других простых товаров. Реализовать функционал возможно плагином Composite Products by SomewhereWarm (90$). Создание конфигураций При создании конфигурации можно указывать товары, либо категории. Во Читать далее »

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

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6170

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

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