Intereting Posts
Получить всю дату начала недели и дату окончания в пределах диапазона дат в php Как использовать параметры php json_encode в файле twig с помощью функции json_encode twig Невозможно получить объект JSON на локальном хосте PHP Регулярное выражение со стрелками (>>) взорвать строку в токенах, сохраняя цитируемые субстраты Какова наилучшая практика использования при использовании PHP и HTML? Как создать объект из String? Проверить флажок FCKEditor или нет SQL-запрос для отображения строк, которые в прошлом были старше 60+ Как показать значение переключателя с помощью PHP Как определить, открывают ли пользователь две вкладки для одного сеанса? Стоп и возврат, если один из нескольких подготовленных операторов не работает Как отправить массив JSON, содержащий jsonobjects на php-сервер изменение пароля в php / codeigniter Кнопка «Радио» снимите флажок при повторном нажатии

Скидка для определенной категории на основе общего количества продуктов

В WooCommerce у меня есть категория продуктов под названием «Образцы», каждый образец стоит 2,99 доллара. Но я бы хотел, чтобы автоматически изменить стоимость образцов с 2,99 до 1 доллара США, когда в корзину добавлено 5 образцов.

Поэтому, если в корзину добавлено 4 образца, общая сумма составит 11,96 долл. США … но если бы было добавлено 5, общая сумма составляла бы 5 долл. США.

Так что на каждые 5 продуктов цена продукта изменилась бы с 2,99 долл. До 1 долл., Но если бы 6 образцов были добавлены в корзину, общая сумма составляла бы 7,99 долл. США, и если бы 10 были добавлены, общая сумма составляла бы 10 долл. США и т. Д.

Как я мог это достичь?

Благодарю.

– Обновлено –

Вот что должно быть удобно для ваших требований.
Эта функция добавит скидку в корзину:

add_action( 'woocommerce_cart_calculate_fees','custom_cart_discount', 10, 1 ); function custom_cart_discount( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; // Define HERE your targeted product category (id, slug or name are accepted) $category = 'posters'; // Set the price for Five HERE $price_x5 = 5; // initializing variables $calculated_qty = 0; $calculated_total = 0; $discount = 0; // Iterating through each cart item foreach($cart_object->get_cart() as $item_key => $item): // Make this discount calculations only for products of your targeted category if(has_term($category, 'product_cat', $item['product_id'])): $item_price = $item["data"]->price; // The price for one (assuming that there is always 2.99) $item_qty = $item["quantity"];// Quantity $item_line_total = $item["line_total"]; // Item total price (price x quantity) $calculated_qty += $item_qty; // ctotal number of items in cart $calculated_total += $item_line_total; // calculated total items amount endif; endforeach; // ## CALCULATIONS (updated) ## if($calculated_qty >= 5): for($j = 5, $k=0; $j <= $calculated_qty; $j+=5,$k++); // Update $k=0 (instead of $k=1) $qty_modulo = $calculated_qty % 5; $calculation = ( $k * $price_x5 ) + ($qty_modulo * $item_price); $discount -= $calculated_total - $calculation; endif; // Adding the discount if ($discount != 0) $cart_object->add_fee( __( 'Quantity discount', 'woocommerce' ), $discount, false ); // Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false) }