Главная / Уроки / Woocommerce / Настройка скидки в WooСommerce без использования плагинов и купонов

Настройка скидки в WooСommerce без использования плагинов и купонов

woocommerce скидки
Содержание

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

Мы разберем несколько вариантов фиксированных и динамических скидок. Весь код, опубликованный ниже необходимо добавлять в файл functions.php

Фиксированная скидка на всю корзину без каких либо условий

Пригодится, если вы решили устроить какую-нибудь распродажу на весь товар.

function woo_discount_all(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	$discount = $cart->subtotal * 0.05; // 0.05 - скидка 5%
	
	$cart->add_fee('Скидка 5% на всю покупку', -$discount);

}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_all');

Фиксированная скидка от определённой суммы заказа

Скидка срабатывает, если человек добавил в корзину товаров на определённую сумму.

function woo_discount_fromprice(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	$woo_current_price = $cart->subtotal;
	
	if($woo_current_price >= 5000) {
	
		$discount = $cart->subtotal * 0.03; // 0.03 - скидка 3%
		$cart->add_fee('Скидка 3% за заказ на сумму от 5 000 рублей ', -$discount);
	
	}
}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_fromprice');

Динамическая скидка в зависимости от суммы заказа

Процент скидки изменяется в зависимости от общей суммы заказа.

function woo_discount_fromprice(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	$woo_current_price = $cart->subtotal;
	
	if($woo_current_price >= 5000 && $woo_current_price <= 9999) {
	
		$discount = $cart->subtotal * 0.03; // 0.03 - это 3%
		$cart->add_fee('Скидка 3% за заказ на сумму от 5 000 рублей ', -$discount);
		
	} elseif($woo_current_price >= 10000) {
	
		$discount = $cart->subtotal * 0.05; // 0.05 - это 5%
		$cart->add_fee('Скидка 5% за заказ на сумму от 10 000 рублей ', -$discount);
	
	}
}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_fromprice');

Фиксированная скидка на всю корзину при наличии определенного товара

Скидка применяется, если в корзину добавлен определённый товар.

function woo_discount_product1(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	$array_product_id = [];

	foreach($cart->get_cart() as $cart_item) {

		$array_product_id[] = $cart_item['product_id'];
	
	}

	if(in_array(1, $array_product_id)) { // Скидка сработает, если в корзине есть товар с ID = 1

		$discount = $cart->subtotal * 0.05; // 0.05 - скидка 5%

		$cart->add_fee('Скидка 5% за выбор акционного товара ', -$discount);

	}

}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_product1');

Фиксированная скидка на всю корзину при наличии одного из акционных товаров

Скидка применяется, если в корзину добавлен один из определённых товаров.

function woo_discount_product2(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	$array_product_id = [];

	foreach($cart->get_cart() as $cart_item) {

		$array_product_id[] = $cart_item['product_id'];
	
	}

	if(in_array(1, $array_product_id) || in_array(13, $array_product_id) || in_array(15, $array_product_id)) { // Скидка сработает, если в корзине есть товар с ID = 1 или с ID = 13 или с ID = 15

		$discount = $cart->subtotal * 0.05; // 0.05 - скидка 5%

		$cart->add_fee('Скидка в 5% за выбор акционного товара ', -$discount);

	}

}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_product2');

Фиксированная скидка на всю корзину при наличии двух определённых товаров

Скидка применяется, если в корзину одновременно добавлены два определённых товар.

function woo_discount_product3(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	$array_product_id = [];

	foreach($cart->get_cart() as $cart_item) {

		$array_product_id[] = $cart_item['product_id'];
	
	}

	if(in_array(1, $array_product_id) && in_array(13, $array_product_id)) { // Скидка сработает, если в корзине есть товары с ID = 1 и с ID = 13

		$discount = $cart->subtotal * 0.05; // 0.05 - скидка 5%

		$cart->add_fee('Скидка 5% за выбор акционных товаров ', -$discount);

	}

}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_product3');

Скидка в зависимости от способа доставки

Скидка применяется, если выбран определённый способ доставки.

function woo_discount_delivery(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	global $woocommerce;

	$delivery_name = '';
	$delivery_selected = [];
	$available_methods = $woocommerce->shipping->get_packages();

	if(isset($woocommerce->session)) {

		$delivery_selected = $woocommerce->session->get('chosen_shipping_methods');

	}

	foreach($available_methods as $method) {
		
		foreach($delivery_selected as $delivery) {
			
			if(isset($method['rates'][$delivery])) {

				$delivery_name = $method['rates'][$delivery]->label;

				break;

			}
		
		}

	}

	if($delivery_name == 'Самовывоз') {

		$discount = $cart->subtotal * 0.02; // 0.02 - скидка 2%

		$cart->add_fee('Cкидка 2% за самовывоз ', -$discount);

	}

}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_delivery');

Скидка за товар из определённой категории

Скидка срабатывает, если в корзину добавлен любой товар из конкретной категории.

function woo_discount_cat(WC_Cart $cart) {

	if(is_admin() && !defined('DOING_AJAX')) {
	
		return;
		
	}

	foreach($cart->get_cart() as $cart_item) {

		if(has_term(2, 'product_cat', $cart_item['product_id'])) { // Если в корзину добавлен товар из категории с ID = 2

			$discount = $cart->subtotal * 0.05; // 0.05 - скидка 5%

			$cart->add_fee('Cкидка 5% за выбор товара из определённой категории ', -$discount);

			break;

		}
	
	}

}

add_action('woocommerce_cart_calculate_fees' , 'woo_discount_cat');

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *