【发布时间】:2019-09-16 14:37:31
【问题描述】:
在此 WooCommerce 商店中订购特定产品时,订单中会添加两个元值。
存储元值的两个字段位于wp_woocommerce_order_itemmeta
元键是:
quantity
assemblycost
我想在下新订单时以编程方式创建一个新的自定义字段,并将这个新字段的值设置为等于quanity * assemblycost(如果已订购产品的元键组装成本存在)。
经过一番研究,我发现woocommerce_checkout_update_order_meta 是一个钩子,在订单保存到数据库并更新元数据后执行。所以这似乎是我应该使用的钩子。
参考: Add extra meta for orders in 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。
如何更改上面的代码,使计算字段的值是quantity * assemblycost 的乘积?
【问题讨论】:
标签: php wordpress woocommerce hook-woocommerce orders