Мне нужно изменить цену товара в заказе на woocommerce, но все, что я нашел, это изменить цену в корзине, но это не то, что мне нужно, потому что мне нужно изменить после оформления заказа.
Может кто-нибудь подсказать, как это сделать?
Вам необходимо использовать новые методы установки CRUD , представленные в Woocommerce 3:
WC_Order
WC_Order_Item_Product
WC_Data
save()
Вот рабочий базовый пример со статической ценой и статическим идентификатором заказа:
$order_id = 809; // Static order Id (can be removed to get a dynamic order ID from $order_id variable) $order = wc_get_order( $order_id ); // The WC_Order object instance // Loop through Order items ("line_item" type) foreach( $order->get_items() as $item_id => $item ){ $new_product_price = 50; // A static replacement product price $product_quantity = (int) $item->get_quantity(); // product Quantity // The new line item price $new_line_item_price = $new_product_price * $product_quantity; // Set the new price $item->set_subtotal( $new_line_item_price ); $item->set_total( $new_line_item_price ); // Make new taxes calculations $item->calculate_taxes(); $item->save(); // Save line item data } // Make the calculations for the order $order->calculate_totals(); $order->save(); // Save and sync the data
Тогда вам придется заменить статическую цену на вашу новую цену на пользовательской странице, что не так просто, так как вам нужно настроить таргетинг на $item_id…
$item_id