/ Плагины / Скидки Woocommerce

Скидки Woocommerce

HIT

19.07.2016

9787

2

Добавляем и настраиваем в woocommerce различные системы скидок.

Стандартная скидка Woocommerce

Можно включить «акционную» цену на товар, к ней можно добавить дату окончания скидки. У товара появляется лэйбл «Распродажа», можно изменить на «Акция» или SALE переводом.

Вывести процент скидки

для этого нужно создать файл percentage.php (в директории woocommerce/single-product/) с содержимым:

<?php
/**
* Product sale percentage
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

global $post, $product;

?>
<?php if ($product->is_on_sale() && $product->product_type == 'variable') : ?>

<div class="percentage">
<div class="inside">
<div class="inside-text">
<?php
$available_variations = $product->get_available_variations();
$maximumper = 0;
for ($i = 0; $i < count($available_variations); ++$i) {
$variation_id=$available_variations[$i]['variation_id'];
$variable_product1= new WC_Product_Variation( $variation_id );
$regular_price = $variable_product1 ->regular_price;
$sales_price = $variable_product1 ->sale_price;
$percentage= round((( ( $regular_price - $sales_price ) / $regular_price ) * 100),1) ;
if ($percentage > $maximumper) {
$maximumper = $percentage;
}
}
echo $price . sprintf( __('%s', 'woocommerce' ), $maximumper . '%' ); ?></div>
</div>
</div><!-- end callout -->

<?php elseif($product->is_on_sale() && $product->product_type == 'simple') : ?>

<div class="percentage">
<div class="inside">
<div class="inside-text">
<span style="font-family: 'Open Sans', sans-serif; font-size:9px">Скидка!</span>
<?php
$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
echo $price . sprintf( __('-%s', 'woocommerce' ), $percentage . '%' ); ?></div>
</div>
</div><!-- end bubble -->

<?php endif; ?>

Выводим в шаблоне WC

<?php get_template_part( 'woocommerce/single-product/percentage' ); ?>

Выгода в рублях

Для этого нужно создать файл benefit.php (в директории woocommerce/single-product/) с содержимым:

<?php
/**
 * Product sale benefit
 *
 * @author WooThemes
 * @package WooCommerce/Templates
 * @version 1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly }

global $post, $product; ?>

<?php if ($product->is_on_sale() && $product->product_type == 'variable') : ?>
 
	<div class="benefit"><div class="inside">
	
		<div class="inside-text">
		<?php $available_variations = $product->get_available_variations(); 
		$maximumper = 0;
		for ($i = 0; $i < count($available_variations); ++$i) {
			$variation_id=$available_variations[$i]['variation_id'];
			$variable_product1= new WC_Product_Variation( $variation_id );
			$regular_price = $variable_product1 ->regular_price;
			$sales_price = $variable_product1 ->sale_price;
			$benefit= round(($regular_price - $sales_price),1) ;
			if ($benefit > $maximumper) { $maximumper = $benefit;}
		}
		echo $price . sprintf( __('%s', 'woocommerce' ), $maximumper . 'р.' ); ?>
		</div>
	
	</div></div>
	 
	<?php elseif($product->is_on_sale() && $product->product_type == 'simple') : ?>
	 
	<div class="benefit"><div class="inside">
	
		<div class="inside-text">
		<span>Выгода:</span>
		<?php $benefit = round( $product->regular_price - $product->sale_price );
		echo $price . sprintf( __('%s', 'woocommerce' ), $benefit . 'р.' ); ?>
		</div>
	
	</div></div>
 
<?php endif; ?>

Выводим в шаблоне WC

<?php get_template_part( 'woocommerce/single-product/benefit' ); ?>

Скидка от количества товара

В зависимости от количества покупаемого товара применяется скидка (обновить корзину) от 11 до 22 — 2% от 22 до 52 — 5% более 52 — 10%

//Скидка по количеству товара

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); 

function add_custom_price( $cart_object ) { 
	foreach ( $cart_object->cart_contents as $key => $value ) { 
		if ($value['quantity']>11 && $value['quantity']<22) { 
			$discount = $value['data']->price * 0.02; 
			$value['data']->price = $value['data']->price - $discount; 
		} elseif ($value['quantity']>22 && $value['quantity']<52) { 
			$discount = $value['data']->price * 0.05; 
			$value['data']->price = $value['data']->price - $discount; 
		} elseif ($value['quantity']>52) { 
			$discount = $value['data']->price * 0.10; 
			$value['data']->price = $value['data']->price - $discount; 
		} 
		else { ''; } 
	} 
}
В последних версиях Woocommerce это не работает

И еще одна найденная функция (-5%), сам еще не проверял:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );

function add_custom_price( $cart_object ) {
	foreach ( $cart_object->cart_contents as $key => $value ) {
		if ($value['quantity']>0) {
			$discount = $value['data']->price * 0.05;
			$value['data']->price = $value['data']->price - $discount;
		}
	}
}

Скидка от суммы заказа

Реализуем данную скидку с помощью купона, для этого создаем «купон» со скидкой в 10% (в настройках woocommerce должны быть активированы купоны).

// Скидка на сумму заказа (с помощью купона)

add_action( 'woocommerce_before_cart', 'apply_matched_coupons' ); 

function apply_matched_coupons() { 
  global $woocommerce; $coupon_code = '10_procent_code'; 
  if ( $woocommerce->cart->has_discount( $coupon_code ) ) return; 
  if ( $woocommerce->cart->cart_contents_total >= 2500 ) 
  { $woocommerce->cart->add_discount( $coupon_code ); $woocommerce->show_messages(); } 
}
Обратите внимание что в $coupon_code = ’10_procent_code’ вместо 10_procent_code вы должны вставить код скидочного купона

Статья содержит материалы сайта: eysman.pro

Еще подобный функционал:

add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
  global $woocommerce;
  
  // Set your coupon codes
  $tri10 = 'tri10';
  $tri15 = 'tri15';
  $tri20 = 'tri20';
        
  // Get the cart subtotal in non-decimal number format
  $cart_subtotal = WC()->cart->subtotal;
  
  // If cart subtotal is less than 400 remove coupons
  if ($cart_subtotal < 400) {

	if ( $woocommerce->cart->has_discount( $tri10 ) || $woocommerce->cart->has_discount( $tri15 ) || $woocommerce->cart->has_discount( $tri20 ) ) {
		WC()->cart->remove_coupon( $tri10 );
		WC()->cart->remove_coupon( $tri15 );
		WC()->cart->remove_coupon( $tri20 );
	}

  } 
  
  // If cart subtotal is greater 399 AND is less than 600 add or remove coupons
  if ($cart_subtotal > 399 && $cart_subtotal < 600 ) {

	if ( $woocommerce->cart->has_discount( $tri10 ) ) return;

		if ( $woocommerce->cart->has_discount( $tri15 ) || $woocommerce->cart->has_discount( $tri20 ) ) {
			WC()->cart->remove_coupon( $tri15 );
			WC()->cart->remove_coupon( $tri20 );
		}

	  $woocommerce->cart->add_discount( $tri10 );
	  
  } 
  
  // If cart subtotal is greater than 599 AND is less than 800 add or remove coupons
  if ($cart_subtotal > 599 && $cart_subtotal < 800) {

  	if ( $woocommerce->cart->has_discount( $tri15 ) ) return;
  	
		if ( $woocommerce->cart->has_discount( $tri10 ) || $woocommerce->cart->has_discount( $tri20 ) ) {
			WC()->cart->remove_coupon( $tri10 );
			WC()->cart->remove_coupon( $tri20 );
		}

	  $woocommerce->cart->add_discount( $tri15 );	
  } 
	
  // If cart subtotal is greater than 799 add or remove coupons
  if ( $cart_subtotal > 799) {

  	if ( $woocommerce->cart->has_discount( $tri20 ) ) return;
  	
		if ( $woocommerce->cart->has_discount( $tri10 ) || $woocommerce->cart->has_discount( $tri15 ) ) {
			WC()->cart->remove_coupon( $tri10 );
			WC()->cart->remove_coupon( $tri15 );
		}

	  $woocommerce->cart->add_discount( $tri20 );
	  
  } 

}

WooCommerce Bulk Discount (20 000+)

Отличный плагин для реализации системы скидок. Плюсом данного решения является то, что объем товара и скидки можно настроить конкретно для каждого товара. Глобально можно настроить какого характера будет скидка: в рублях, в процентах или фиксированная цена (т.е. если изменить в настройках проценты, то в товарах скидку назначать можно только в процентах).

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

Woo — Dynamic Pricing

Исключительно платное решение, для одного сайта 129$ (04.06.2018), но оно того стоит!

Во первых, есть ряд глобальных настроек: скидки на группы товаров, скидки в зависимости от ролей, а также скидки распространяющиеся на всю категорию (по сути функционал плагина Woo Product Category Discount).

Во вторых, индивидуальные настройки товара. Можно настраивать группы скидок, а в каждой группе правила (от 10, от 30, от 50 и т.д.), причем скидка для каждого товара отдельно может быть в процентах, в рублях, либо фиксированной. Можно прописывать период действия скидок. Для вариаций можно прописать правила отдельно!

Easy WooCommerce Discounts — WooCommerce Dynamic Pricing & Discounts

Отличный плагин не смотря на небольшое количество загрузок — 400 (02.09.2019). Можно конфигурировать различные условия акция, причем довольно легко и понятно.

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

  • Похожие записи
  • Комментарии
  • Вложения
Настройка вывода подкатегорий товаров

Настройка вывода подкатегорий товаров

При варианте вывода в категориях товаров, в не зависимости есть ли подкатегории или нет, для более точного подбора товаров можно выводить до товаров подкатегории. При этом сделать это можно довольно Читать далее »

Настройка полей заказчика

Настройка полей заказчика

При заказе товара необходимо заполнить данные покупателя (имя, телефон, адрес доставки и т.д.). В стандартном варианте поля эти несколько «раздуты», много лишнего, требуется некоторое оформление. Можно использовать плагин Saphali Woocommerce Читать далее »

/
Upgrade WC

Upgrade WC

Очередная серия улучшений (upgrade) плагина WC. Буду добавлять по мере изучения новые решения. Поиск по SKU (артикулу) Из коробки WC не ищет по артикулам (SKU). Но достаточно установить плагин Search Читать далее »

/

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

2 комментария

  1. Лисицын

    Спасибо за решение. Давно искал.
    Кстати часто что-то ищу и не первый раз нахожу у вас на сайте.
    Есть большое пожелание / убрать кастомный скролл с сайта — юзабилити зеро))

    1. Alexandr

      Прислушаюсь к Вашему совету. С этим скроллом постоянно какие то проблемы.. А его «крутость» сомнительна. И слышу о неудобстве уже не первый раз. Отключил.
      Спасибо за отзыв!

Скидки Woocommerce
Плагины WordPress
Рекомендации для васПлагины WordPressOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.