Я добавил пользовательское поле в woocommerce, у которого есть дополнительные цены на фреймы для картин, теперь, если цена изображения равна 10 $, а пользователь выбирает кадр, он добавит 5 $ let say и сумма будет 15 $.
Теперь, если я добавлю другой продукт, он выбирает пользовательскую цену фрейма. например, цена продукта 1 составляет: 10 $, а кадр, выбранный на нем, равен: frame1 whos цена составляет 5 $, поэтому общая сумма будет составлять 15 $ для этого продукта, и если Product 2 будет добавлен с ценой 10 $ и выбранным frame2 с его ценой 6 $ всего этого продукта будет 16 $, однако грантот будет 31 $
Решение, которое близко к тому, что я пытаюсь сделать, это:
add_filter( 'woocommerce_get_discounted_price', 'calculate_discounted_price', 10, 2 ); // Display the line total price add_filter( 'woocommerce_cart_item_subtotal', 'display_discounted_price', 10, 2 ); function calculate_discounted_price( $price, $values ) { $price += $_SESSION['framed_price']; return $price; } }
Я сохраняю значение фрейма в сеансе, и он обновляется каждый раз, когда пользователь нажимает на фрейм. Я использую ajax для этого и пока все не работает нормально. Я тоже получаю значения.
Эта функция в основном выполняет итерацию над добавленными продуктами и добавляет последнюю цену кадра для каждого продукта в корзине.
Как мы добавляем цену продукта с его собственной ценой?
Я нашел ответ на этот вопрос, который решает проблему:
// Change the line total price add_filter( 'woocommerce_get_discounted_price', 'calculate_discounted_price', 10, 2 ); // Display the line total price add_filter( 'woocommerce_cart_item_subtotal', 'display_discounted_price', 10, 2 ); function calculate_discounted_price( $price, $values ) { // You have all your data on $values; $price += 10; return $price; } // wc_price => format the price with your own currency function display_discounted_price( $values, $item ) { return wc_price( $item[ 'line_total' ] ); }
Ссылка: woocommerce, как я могу добавить дополнительную стоимость в общую стоимость продукта?