添加用户元数据作为 WooCommerce 订单状态更改的订单元数据

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();
    }
}

你的代码有一些错误(钩子函数参数错误)。

查看位于 WC_Order status_transition() 方法 (on line 363):[=24= 中的此复合钩子的相关源代码]

do_action( 'woocommerce_order_status_' . $status_transition['to'], $this->get_id(), $this );

其中 $this$order WC_Order 对象)$this->get_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();
    }
}

或者这也适用:

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 );