在该商业商店订购特定产品时,将向订单添加两个元值。
存储元值的两个字段位于wp_woocommerce_order_itemmeta
元键是:
quantity
assemblycost
我希望在下新订单时以编程方式创建一个新的自定义字段,并将此新字段的值设置为quantity*assemblycost
,前提是已订购的产品存在元键assemblycost。
经过一些研究,我发现woocommerce_checkout_update_order_meta
是一个钩子,在订单保存到数据库并更新元数据后执行。所以这似乎是我应该使用的钩子。
参考:为Woocommerce中的订单添加额外的元数据:
function add_item_meta( $order_id ) {
//global $woocommerce;
update_post_meta( $order_id, '_has_event', 'yes' );
}
我尝试在函数中添加以下代码。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。
我如何改变上面的代码,使calculated_field的值是数量*汇编成本
的乘法?
这与订单项目相关,应保存为订单项目元数据,而不是订单元数据。
现在,这应该与您的两个自定义字段数量
和组装成本
同时保存。因此,您应该在问题中提供将数量
和组装成本
保存为订单项元数据的相关代码。
您可以尝试以下方法(但我不确定我是否会工作):
add_action( 'woocommerce_checkout_create_order_line_item', 'action_checkout_create_order_line_item_callback', 1000, 4 );
function action_checkout_create_order_line_item_callback( $item, $cart_item_key, $cart_item, $order ) {
$quantity = $item->get_meta('quantity');
$assemblycost = $item->get_meta('assemblycost');
if( isset($quantity) && isset($assemblycost) ) {
$item->update_meta_data( 'calculated_field', $quantity * $assemblycost );
}
}
代码function.php活动子主题(或活动主题)的文件中。
我对woocommerce(最新版本)中的自定义字段有问题。我需要你的帮助。 我的代码 现在我在从自定义字段获取数据时遇到问题。字段被保存到数据库中,因为在我编辑产品时,值在字段中,但在完成订单后,我无法在钩子中获取它:(我尝试使用get_post_meta、get_meta和其他方法,但都不起作用。有人知道原因吗?
在Woocommerce 3应答代码中使用将自定义产品元数据传递到订单,当从后端手动创建订单时,从后端手动添加产品时,是否可以保存和显示自定义元数据? 这是我的代码(略有改动): 当客户机从前端创建订单时,这种方法可以正常工作。但是,当管理员从后端手动创建订单并添加产品时,自定义元数据不可见。 对于手动创建的订单,如何解决此问题,允许添加产品自定义字段作为自定义订单项目数据?
我一直在编码一个WP插件,用于计算订单的平方英寸总体积,并通过自定义字段将其发送到Shipstation: 我通过SFTP上传到网站文件,它显示在WP上,但当我点击激活我得到一个致命的错误: 致命错误:未捕获错误:调用成员函数get_cart()在 /nas/content/live/sfmstaging/wp-content/plugins/boxCalc/boxCalc.php:10堆栈跟踪空
关于WooCommerce。我有我要添加到购物车的自定义数据。在functions.php文件中,我有以下功能。 这是可行的,自定义数据显示在购物车中。但是,定制数据不会显示在订单和订单电子邮件上。我在Stackoverflow上看到了一些解决这个问题的答案,但我无法让它们适用于我的情况。我提到的解决方案是。 在Woocommerce中保存和显示订单项自定义元数据 显示和保存添加的自定义购物车项目
当从管理员向订单添加产品时,我尝试将自定义产品元添加到订单项元。这是我的代码,它在后端什么都不做。。。