Когда конкретный продукт заказывается в этом магазине WooCommerce, к заказу добавляются два мета-значения.
Два поля, в которых хранятся мета-значения, расположены в wp_woocommerce_order_itemmeta
Мета-ключи:
quantity
assemblycost
Я хочу создать новое настраиваемое поле программным способом при размещении нового заказа и установить значение этого нового поля равным quanity * assemblycost
, если для продукта, который был заказан, существует стоимость сборки мета-ключа.
После некоторых исследований я обнаружил, что woocommerce_checkout_update_order_meta
- это ловушка, которая выполняется после сохранения заказа в базе данных и обновления метаданных. Так что это, кажется, тот крючок, который я должен использовать.
Ref:
Добавить дополнительные мета для заказов в Woocommerce :
function add_item_meta( $order_id ) {
//global $woocommerce;
update_post_meta( $order_id, '_has_event', 'yes' );
}
Я попытался добавить следующий код в functions.php:
add_action('woocommerce_checkout_update_order_meta',function( $order_id, $posted ) {
$assemblycost = wc_get_order_item_meta($order_id, 'assemblycost');
$quantity = wc_get_order_item_meta($order_id, 'quantity');
$calculatedValue = $quantity * $assemblycost;
wc_update_order_item_meta( $order_id, 'calculated_field', $calculatedValue );
} , 10, 2);
Это создает новое метаполе, однако оно устанавливает значение 0.
Как я могу изменить приведенный выше код, чтобы значение поля selected__ умножалось на quantity * assemblycost
?