Как предлагать скидки в зависимости от количества в WooCommerce
Опубликовано: 2020-01-27Как правило, как владелец магазина, вы можете иногда предлагать скидки, если клиенты покупают более одного количества определенного продукта. Это может быть либо увеличение продаж, либо ликвидация избыточных запасов. В этом посте вы узнаете, как предлагать скидки в зависимости от количества в WooCommerce, используя как фрагменты кода, так и плагины.
Как предлагать скидки в зависимости от количества в WooCommerce с помощью фрагментов кода
Давайте рассмотрим, как использовать для этого фрагмент кода. С помощью этого фрагмента кода мы предлагаем покупателям скидку в размере 5 % при покупке более двух партий одного и того же продукта.
Для этого вам нужно будет добавить приведенный ниже код в файл functions.php вашей дочерней темы:
add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );
функция ts_add_default_price_as_custom($cart_item_data, $product_id, $variation_id){
$product_id = $variation_id > 0? $вариант_ид : $продукт_ид;
## ----- УСТАВЬТЕ СКИДКУ ЗДЕСЬ ----- ##
$ скидка_процент = 5; // Скидка (5%)
// Объект WC_Product
$ продукт = wc_get_product ($ product_id);
$price = (float) $product->get_price();
// Установите базовую цену продукта по умолчанию в качестве данных пользовательской корзины
$cart_item_data['base_price'] = $цена;
// Установите цену продукта со скидкой в качестве данных пользовательской корзины
$cart_item_data['new_price'] = $цена * (100 - $discount_percentage) / 100;
// Установите процент как пользовательские данные о товаре в корзине
$cart_item_data['процент'] = $discount_percentage;
вернуть $cart_item_data;
}
// Отображаем исходную цену товара
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );
функция ts_display_cart_items_default_price($product_price, $cart_item, $cart_item_key){
если( isset($cart_item['base_price'])) {
$product = $cart_item['данные'];
$product_price = wc_price(wc_get_price_to_display($product, array('price' => $cart_item['base_price'] )) );
}
возврат $product_price;
}
// Отображаем название товара с процентом скидки
add_filter('woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
функция ts_add_percentage_to_item_name($product_name, $cart_item, $cart_item_key){
if( isset($cart_item['percentage']) && isset($cart_item['base_price'])) ) {
если($cart_item['data']->get_price() != $cart_item['base_price'] )
$product_name .= ' <em>(' . $cart_item['percentage'] . '% со скидкой)</em>';
}
вернуть $product_name;
}
add_action('woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1);
функция ts_custom_discounted_cart_item_price($cart) {
если (is_admin() && ! определено('DOING_AJAX'))
возвращаться;
если ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
возвращаться;
## ----- ЗДЕСЬ УСТАНОВИТЕ КОЛИЧЕСТВО ----- ##
$целевое_кол-во = 2; // Целевое количество
// Перебираем товары в корзине
foreach ($cart->get_cart() как $cart_item) {
// Для количества товара 2 и более
if( $cart_item['количество'] >= $targeted_qty && isset($cart_item['new_price']) ){
// Установить цену со скидкой на товар в корзине
$cart_item['data']->set_price($cart_item['new_price']);
}
}
}Вышеприведенный код добавит скидку 5%, если количество товара превышает 2. Вы можете изменить это в соответствии со своими требованиями, изменив переменную $discount_percentage , чтобы установить желаемую скидку, и $targeted_qty , чтобы установить количество, выше которого вы хотите применить скидку.

Теперь вы сможете увидеть цену со скидкой, если добавите в корзину 2 или более количества одного и того же товара.
В приведенном выше коде мы использовали четыре основных хука:
woocommerce_add_cart_item_data : этот хук-фильтр используется для изменения содержимого/метаданных корзины.
woocommerce_cart_item_price : этот хук-фильтр используется для изменения способа отображения цен в корзине.
woocommerce_cart_item_name : этот хук-фильтр можно использовать для изменения названия товара в корзине. В нашем примере мы используем его, чтобы добавить процент скидки к названию продукта.
woocommerce_before_calculate_totals: этот хук действия используется для переопределения цены товара в корзине.
Как предлагать скидки в зависимости от количества только для товаров, которых нет в продаже:
Если вы хотите ограничить это только теми продуктами, которых нет в продаже, вам просто нужно отредактировать фрагмент кода выше, чтобы добавить условие внутри функции, которая добавляется к хуку woocommerce_add_cart_item_data:

add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );
функция ts_add_default_price_as_custom($cart_item_data, $product_id, $variation_id){
$product_id = $variation_id > 0? $вариант_ид : $продукт_ид;
## ----- УСТАВЬТЕ СКИДКУ ЗДЕСЬ ----- ##
$ скидка_процент = 5; // Скидка (5%)
// Объект WC_Product
$ продукт = wc_get_product ($ product_id);
// ДОБАВЬТЕ ЗДЕСЬ УСЛОВИЕ, чтобы предложить СКИДКУ ТОЛЬКО на товары, не продаваемые в продаже
если( ! $product->is_on_sale() ){
$price = (float) $product->get_price();
// Установите базовую цену продукта по умолчанию в качестве данных пользовательской корзины
$cart_item_data['base_price'] = $цена;
// Установите цену продукта со скидкой в качестве данных пользовательской корзины
$cart_item_data['new_price'] = $цена * (100 - $discount_percentage) / 100;
// Установите процент как пользовательские данные о товаре в корзине
$cart_item_data['процент'] = $discount_percentage;
}
вернуть $cart_item_data;
}
// Отображаем исходную цену товара
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );
функция ts_display_cart_items_default_price($product_price, $cart_item, $cart_item_key){
если( isset($cart_item['base_price'])) {
$product = $cart_item['данные'];
$product_price = wc_price(wc_get_price_to_display($product, array('price' => $cart_item['base_price'] )) );
}
возврат $product_price;
}
// Отображаем название товара с процентом скидки
add_filter('woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
функция ts_add_percentage_to_item_name($product_name, $cart_item, $cart_item_key){
if( isset($cart_item['percentage']) && isset($cart_item['base_price'])) ) {
если($cart_item['data']->get_price() != $cart_item['base_price'] )
$product_name .= ' <em>(' . $cart_item['percentage'] . '% со скидкой)</em>';
}
вернуть $product_name;
}
add_action('woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1);
функция ts_custom_discounted_cart_item_price($cart) {
если (is_admin() && ! определено('DOING_AJAX'))
возвращаться;
если ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
возвращаться;
## ----- ЗДЕСЬ УСТАНОВИТЕ КОЛИЧЕСТВО ----- ##
$целевое_кол-во = 2; // Целевое количество
// Перебираем товары в корзине
foreach ($cart->get_cart() как $cart_item) {
// Для количества товара 2 и более
if( $cart_item['количество'] >= $targeted_qty && isset($cart_item['new_price']) ){
// Установить цену со скидкой на товар в корзине
$cart_item['data']->set_price($cart_item['new_price']);
}
}
}
Таким образом, вы можете предлагать скидки в зависимости от количества, используя фрагменты кода для продуктов без продажи, распродажи или всех продуктов, то есть для всего магазина, указав соответствующее условие внутри функции, которая добавляется к крючку фильтра woocommerce_add_cart_item_data .
Как предлагать скидки в зависимости от количества в WooCommerce с помощью плагинов
Если вам неудобно добавлять фрагмент кода в файлы вашего веб-сайта, вы также можете использовать плагины для этого:
- Правила скидок для WooCommerce : это бесплатный плагин, который позволяет добавлять процентные скидки не только в зависимости от количества продуктов, но и в случае превышения вашими клиентами определенного ценового предела. Вы также можете добавить процентные скидки на определенное количество товаров (не обязательно одного и того же товара). PRO-версия этого плагина позволяет добавлять скидки для всей категории, предложения BOGO (купи один, получи один бесплатно), скидку с фиксированной ценой вместо скидки в процентах и многое другое.
- Условные скидки для WooCommerce: это еще один плагин, который предлагает почти все важные функции в своей бесплатной версии. Вы можете добавлять скидки в зависимости от количества, количества товаров в корзине, для определенных категорий, для определенных продуктов, для переменных функций (синяя рубашка, размер Medium д.), для определенных ролей в магазине или даже для конкретных клиентов. Его версия PRO имеет несколько дополнительных функций, одна из которых — бесплатное добавление продукта в корзину при покупке определенного продукта.
- Смарт-купоны: помимо подарочных карт, кредитов магазина, купонов URL и дополнительных ограничений, вы также можете ограничить купон на основе количества конкретных товаров в корзине (например, 10 рубашек), а также общего количества нескольких товаров в корзине. тележка (пример — 5 рубашек + 2 штана + 3 ремня).
Таким образом, вы можете использовать фрагменты кода или плагины, чтобы предлагать скидки своим клиентам в зависимости от количества продуктов.
