Чтобы применить скидку ко второму товару с помощью WooCommerce, вы можете рассмотреть несколько способов. Ниже я опишу несколько подходов с примерами кода:
-
Использование скидки на основе корзины.
Этот метод применяет скидку ко второму товару на уровне корзины. Вы можете использовать хук действияwoocommerce_before_calculate_totals, чтобы изменить цену продукта в зависимости от его положения в корзине.// Add a discount to the second product in the cart add_action('woocommerce_before_calculate_totals', 'apply_discount_to_second_product'); function apply_discount_to_second_product($cart) { if (is_admin() && !defined('DOING_AJAX')) { return; } $second_product_found = false; $discount_percentage = 10; // Adjust this value to set the discount percentage foreach ($cart->get_cart() as $cart_item_key => $cart_item) { // Check if it is the second product if ($second_product_found) { $product = $cart_item['data']; $price = $product->get_price(); $discount_amount = $price * ($discount_percentage / 100); $product->set_price($price - $discount_amount); } // Mark the second product as found $second_product_found = true; } } -
Использование скидки на основе продукта.
Этот метод применяет скидку непосредственно ко второму продукту, изменяя его цену. Вы можете использовать фильтрwoocommerce_product_get_price, чтобы корректировать цену продукта в зависимости от его позиции.// Add a discount to the second product add_filter('woocommerce_product_get_price', 'apply_discount_to_second_product', 10, 2); function apply_discount_to_second_product($price, $product) { global $woocommerce; if (!$woocommerce->cart || is_admin()) { return $price; } $second_product_found = false; $discount_percentage = 10; // Adjust this value to set the discount percentage foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { // Check if it is the second product if ($second_product_found) { // Apply the discount $discount_amount = $price * ($discount_percentage / 100); $price -= $discount_amount; } // Mark the second product as found $second_product_found = true; } return $price; }
Не забудьте настроить переменную discount_percentageв обоих примерах, чтобы установить желаемую сумму скидки.