【问题标题】:Add user meta data as order meta on WooCommerce order status change在 WooCommerce 订单状态更改中添加用户元数据作为订单元数据
【发布时间】:2021-03-25 09:52:30
【问题描述】:

我正在尝试将自定义用户元字段添加到订单元数据。 当我将订单状态更改为“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();
    }
}

【问题讨论】:

    标签: php wordpress woocommerce metadata orders


    【解决方案1】:

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

    查看位于WC_Orderstatus_transition()方法的这个复合钩子的相关源代码(在line 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 );
    

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2021-07-10
      • 2021-10-20
      • 2021-06-01
      • 2021-04-08
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 2014-10-26
      相关资源
      最近更新 更多