Крючок по индивидуальной цене в заказе Woocommerce

В настоящее время я разрабатываю интернет-магазин, где мне нужно было сделать отдельную функцию цены. До сих пор с помощью хуков woocommerce мне удалось манипулировать ценой как в корзине, так и на кассе, это работает без каких-либо проблем. Крючки, которые я использовал woocommerce_cart_item_price, woocommerce_cart_item_subtotals, woocommerce_cart_subtotal а также woocommerce_cart_total,

Теперь мы подошли к моей проблеме, которую мне нужно решить в самое ближайшее время. Цена из моей пользовательской функции не включена в заказ woocommerce. Итак, есть ли ловушка для манипулирования ценами товаров в заказе, прежде чем woocommerce создаст заказ?

Я смотрел на https://docs.woocommerce.com/wc-apidocs/hook-docs.html
но безуспешно

Откуда Woocommerce получает цену при создании заказа? Метаполе _price, woocommerce_get_price крюк, тележка или что-то еще. Буду очень признателен, если кто-нибудь сможет мне это объяснить. Я считаю, что woocommerce не очень соответствует тому, откуда она получает цену.

Пожалуйста, задавайте вопросы, если вы не понимаете мою проблему или мой относительно плохой английский. Заранее спасибо.

1

Решение

Я использую woocommerce_get_price Крюк, когда вы его измените, эта измененная цена будет использоваться для корзины для расчета общей суммы (цена * кол-во).

После размещения заказа WooCommerce рассчитывает цену продукта на основе итоговой суммы и кол-во, если вы измените одно из 2 значений (итоговая или кол-во), это изменит цену продукта.

Другими словами, цена является динамической после создания заказа.

Редактировать:

Добавлен способ изменения цены

function change_price( $cart ) {

//  Exit function if price is changed at backend
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

foreach ( $cart->get_cart() as $key => $item ) {
$item['data']->set_price( $custom_price );
}
}
add_action( 'woocommerce_before_calculate_totals', 'change_price', 10, 1);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]