如何解决在 WooCommerce 订单状态更改时将用户元数据添加为订单元数据
我正在尝试向订单元数据添加自定义用户元字段。 当我将订单状态更改为“wordt-verwerkt”时,我想添加这个,这是我使用 WooCommerce 插件为自定义订单状态添加的自定义订单状态。 我尝试使用代码 from this post,但在更改订单状态时出现错误。 (我也尝试过状态为“正在处理”,但也没有成功)
我现在拥有的是以下代码:
add_action( 'woocommerce_order_status_wordt-verwerkt','add_order_meta_from_custom_user_meta',10,2 );
function add_order_meta_from_custom_user_meta( $order,$data ) {
$user_id = $order->get_user_id(); // Get the user id
if( $WefactEmail = get_user_meta( $user_id,'KVK_nummer_2',true ) ) {
$order->update_meta_data( 'WeFact_email',$WefactEmail );
}
if( isset($WefactEmail) ) {
$order->save();
}
}
解决方法
您的代码中存在一些错误(挂钩函数参数错误)。
请参阅位于 WC_Order
status_transition()
方法中的此复合钩子的相关源代码(在 line 363 上):
do_action( 'woocommerce_order_status_' . $status_transition['to'],$this->get_id(),$this );
其中 $this
是 $order
(WC_Order
对象) 和 $this->get_id()
是 {{ 1}} (订单 ID)。
改用以下内容:
$order_id
或者这也有效:
add_action( 'woocommerce_order_status_wordt-verwerkt','add_order_meta_from_custom_user_meta',10,2 );
function add_order_meta_from_custom_user_meta( $order_id,$order ) {
$user_id = $order->get_user_id(); // Get the user id
$wf_email = get_user_meta( $user_id,'KVK_nummer_2',true );
if( ! empty($wf_email) ) {
$order->update_meta_data( 'WeFact_email',$wf_email );
$order->save();
}
}
代码位于活动子主题(或活动主题)的functions.php 文件中。两者都应该有效。
对于 add_action( 'woocommerce_order_status_wordt-verwerkt',true );
if( ! empty($wf_email) ) {
update_post_meta( $order_id,'WeFact_email',$wf_email );
}
}
状态,替换:
processing
与:
add_action( 'woocommerce_order_status_wordt-verwerkt',2 );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。