Генератор устойчивых к взлому паролей   •   Online-инструменты
6 392 просм
12 комм
Поделиться:

Скидка в процентах на всю корзину без купона в WooCommerce

WooCommerce – популярное дополнение для WordPress, позволяющее организовать на вашем сайте интернет-магазин. Я работаю с ним очень часто, и чаще всего требуется реализовать какое-нибудь нестандартное решение, которое по умолчанию не предусмотрено системой.

Сегодня я покажу вам два варианта (статический и динамический) скриптов, с помощью которых можно организовать скидку на вашем сайте без использования купонов.

Фиксированная скидка в процентах на всю корзинку в WooCommerce

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

Скрипт для скидки:

function woo_discount_total(WC_Cart $cart) {

	$discount = $cart->subtotal * 0.05; // 0.05 - это 5%
	
	$cart->add_fee("Фиксированная скидка в 5% ", -$discount);

}

add_action("woocommerce_cart_calculate_fees" , "woo_discount_total");

Его вы вставляете в низ файла functions.php, который находится в папке вашей темы.

Динамичная (изменяющаяся в зависимости от итоговой суммы) скидка в процентах на всю корзинку в WooCommerce

Здесь, в отличие от первого варианта, задачка немного сложнее. Нашу скидку мы привяжем к диапазону цен. И, например, когда человек заказал товаров на сумму от 1000 до 10 000 – дадим ему одну скидку, а выше – другую.

Реализация будет выглядеть следующим образом:

function woo_discount_total(WC_Cart $cart) {

 	$wo_current_price = $cart->subtotal;
	
	if($wo_current_price >= 1000 && $wo_current_price <= 10000) {
	
		$discount = $cart->subtotal * 0.03; // 0.03 - это 3%
		$cart->add_fee("Скидка в 3% за заказ на сумму от 1 000 до 10 000 рублей ", -$discount);
		
	} elseif($wo_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_total"); 

Ее вы так же вставляете в самый низ файла functions.php, который находится в папке вашей темы.

По желанию вы можете задать свои диапазоны цен.

12
комментариев
Наталья
17.08 в 10:00
Это чудо, это работает. Устала искать плагины для этого дела, все платные и очень дорогие! И такое простое решение!! Спасибо огромное!!!!!!!
  • 1
4memo
25.10 в 11:31
Спасибо, работает!
А как сделать, чтобы информация о скидке: "Скидка в 5% за заказ на сумму более 10 000 руб" - отображалась в корзине независимо от суммы заказа?
Это будет стимулировать покупателя набрать нужную сумму.
А то сейчас он узнает о скидке только после того, как выполнил необходимые условия, а нужно, чтобы он видел эту информацию до достижения требуемой суммы.
  • 1
4memo, для этого нужно внести правки в файл корзины. Под рукой нет к сожалению сайта на WP, не могу подсказать.
  • 0
иван
8.11 в 07:05
Всем привет!
Подскажите пожалуйста Как правильно подключить checkbox Хочу скидку 3% при оплате картой онлайн?
пробывал сделать так
function add_discount($cart)
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) || is_cart() ) {
return;
}

if (WC()->session->chosen_payment_method == 'bacs') {
$cart->add_fee( 'Скидка за метод', - $cart->cart_contents_total * 0.1 );
}

}
add_action( 'woocommerce_cart_calculate_fees', 'add_discount' , 10 );

но оно не работает(
  • 0
иван, попробуйте так:

function add_discount(WC_Cart $cart) {

if(is_admin() && !defined("DOING_AJAX") || is_cart()) {

return;

}

if(WC()->session->get("chosen_payment_method") == "bacs") {

$cart->add_fee("Скидка за метод", -$cart->cart_contents_total * 0.1);

}

}

add_action("woocommerce_cart_calculate_fees", "add_discount");
  • 0
Добрый день! Огромное спасибо! Я не силен в таких штукенциях, подскажите какие строки скопировать и вставить, мне нужны 4 вида фиксированных скидок, типа от 1 до 2, от 2 до 3 и т.д. Спасибо.
  • 0
Василий Салогрев, не совсем понял. 1, 2, 3 - это разные суммы для которых делать скидку?
  • 1
Скидка 3 % 50000 до 150000
5% 150000 до 300000
7% 300000 до 500000
10% от 500000
  • 0
В скрипте опечатка - за заказа)
  • 0
Все, разобрался, огромное спасибо за скрипт!
  • 0
Василий Салогрев, пробуйте:

function woo_discount_total(WC_Cart $cart) {

$wo_current_price = $cart->subtotal;

if($wo_current_price >= 50000 && $wo_current_price < 149999) {

$discount = $cart->subtotal * 0.03;
$cart->add_fee("Скидка в 3% за заказ на сумму от 50 000 до 150 000 рублей", -$discount);

} elseif($wo_current_price >= 150000 && $wo_current_price < 299999) {

$discount = $cart->subtotal * 0.05;
$cart->add_fee("Скидка в 5% за заказ на сумму от 150 000 до 300 000 рублей", -$discount);

} elseif($wo_current_price >= 300000 && $wo_current_price < 499999) {

$discount = $cart->subtotal * 0.07;
$cart->add_fee("Скидка в 7% за заказ на сумму от 300 000 до 500 000 рублей", -$discount);

} elseif($wo_current_price >= 500000) {

$discount = $cart->subtotal * 0.10;
$cart->add_fee("Скидка в 10% за заказа на сумму более 500 000 рублей", -$discount);

}

}

add_action("woocommerce_cart_calculate_fees" , "woo_discount_total");
  • 1
Василий Салогрев, да, увидели опечатку. Спасибо. smiley
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.