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

Скидки Woocommerce

HIT

19.07.2016

6858

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). Можно конфигурировать различные условия акция, причем довольно легко и понятно.

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Изменяем админку Woocommerce

Изменяем админку Woocommerce

В данной статье собираются сниппеты меняющие функционал или внешний вид админ части Woocommerce. Вернуть выпадающий список категорий С версии WC 3.2 изменился фильтр постов в админке, конкретно выбор категории. Теперь Читать далее »

/
Единица измерения товара

Единица измерения товара

В связи с растущими потребностями к функционалу интернет-магазинов будем создавать востребованный функционал на базе плагина Woocommerce. Единица измерения товара Если необходимо выводить единицу товара (шт, кв.м, упаковка, пог.м, и т.д.), Читать далее »

WooCommerce AJAX Products Filter

WooCommerce AJAX Products Filter

Раннее данный фильтр участвовал в общем обзоре, в котором я приводил основные особенности. Рассмотрим подробнее работу с фильтром WooCommerce AJAX Products Filter. Работа с WooCommerce AJAX Products Filter Можно создавать Читать далее »

/

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

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

  1. Аватар
    Лисицын

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

    1. Alexandr
      Alexandr

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

Скидки Woocommerce
Ускорение работы сайта WP
Рекомендации для васУскорение работы сайта WPOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.