[英]Add user meta data as order meta on WooCommerce order status change
我正在嘗試將自定義用戶元字段添加到訂單元數據。 當我將訂單狀態更改為“wordt-verwerkt”時,我想添加它,這是我使用 WooCommerce 插件添加的自定義訂單狀態,用於自定義訂單狀態。 我嘗試使用這篇文章中的代碼,但是當我更改訂單狀態時出現錯誤。 (我也嘗試過狀態為“正在處理”,但也沒有任何成功)
我現在擁有的是以下代碼:
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();
}
}
您的代碼中有一些錯誤(掛鈎的 function arguments 是錯誤的)。
請參閱位於WC_Order
status_transition()
方法中的此復合掛鈎的相關源代碼( 第 363 行) :
do_action( 'woocommerce_order_status_' . $status_transition['to'], $this->get_id(), $this );
其中$this
是$order
( WC_Order
對象) , $this->get_id()
是$order_id
(訂單 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();
}
}
或者這也有效:
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) ) {
update_post_meta( $order_id, 'WeFact_email', $wf_email );
}
}
代碼進入活動子主題(或活動主題)的functions.php文件。 兩者都應該工作。
對於processing
狀態,替換:
add_action( 'woocommerce_order_status_wordt-verwerkt', 'add_order_meta_from_custom_user_meta', 10, 2 );
和:
add_action( 'woocommerce_order_status_processing', 'add_order_meta_from_custom_user_meta', 10, 2 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.