Применить скидки, сгруппированные по категории продуктов в WooCommerce CartPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Применить скидки, сгруппированные по категории продуктов в WooCommerce Cart

Сообщение Anonymous »

Мне нужна помощь с кодом для Woocommerce. < /p>
Мне нужно добавить скидку для каждой выбранной категории в каждом продукте и группируйте ее по каждой категории: < /p>
Например: < /p>
У меня есть 3 категории: < /p>











/> Категория 2 -> дисконтирование 10%< /li>
Категория 3 -> Дисконтирование 5%< /li>
< /ul>
Если я добавлю продукт из категории 1, мне придется выбрать скидку из этой категории.
и если я добавляю продукт из категории 2, то скидка из этой категории. Если у вас есть продукты из разных категорий в корзине: < /p>
Например: -> cart < /p>

Продукт a -> Категория 1 < /li>
Продукт B -> Категория 2 < /li>
категория 1 < /li>
< /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li> < /li>. /> < /ul>
ниже подтотального, мне придется добавить скидку, сгруппированную по категориям и дать мне скидку для всех продуктов в этой категории: < /p>
Например: -> subtotal < /p>

Категория дискрети Категория 2 -> Скидка всех продуктов в категории 2 < /li>
Категория скидки 3 -> Скидка всех продуктов в категории 3 < /li>
< /ul>
Они решили мою проблему с помощью этого кода, в случае, если кто -то нуждается в будущем.add_action( 'woocommerce_cart_calculate_fees', 'wpf_wc_add_cart_fees_by_product_category' );
if ( ! function_exists( 'wpf_wc_add_cart_fees_by_product_category' ) ) {

function wpf_wc_add_cart_fees_by_product_category( $cart ) {
$fees = array(
'cat1' => 10,
'cat2' => 5,
'cat3' => 3,
);

// Initialize an array to store the discounts grouped by category
$category_discounts = array();

// Loop through the cart items
foreach ( $cart->get_cart() as $cart_item_key => $values ) {
$product_id = $values['product_id'];
$product_price = $values['data']->get_price();
$product_categories = get_the_terms( $product_id, 'product_cat' );
$quantity = $values['quantity'];

// Check if the product has categories and there is no error
if ( $product_categories && ! is_wp_error( $product_categories ) ) {
foreach ( $product_categories as $product_category ) {
$category_slug = $product_category->slug;

// Check if the category has a defined discount
if ( ! empty( $fees[ $category_slug ] ) ) {
$discount_percentage = $fees[ $category_slug ];
$discount_amount = $product_price * $quantity * ($discount_percentage / 100);

// Accumulate the discount for the category
if ( ! isset( $category_discounts[ $category_slug ] ) ) {
$category_discounts[ $category_slug ] = 0;
}
$category_discounts[ $category_slug ] += $discount_amount;
}
}
}
}

// Add the accumulated discounts as fees in the cart
foreach ( $category_discounts as $category_slug => $discount_amount ) {
$category_name = get_term_by( 'slug', $category_slug, 'product_cat' )->name;
$fee_name = 'Discount (' . $fees[$category_slug] . '%): ' . $category_name;
$cart->add_fee( $fee_name, -$discount_amount, false );
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... merce-cart
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»