【问题标题】:Adding user custom field to the order meta-data automatically自动将用户自定义字段添加到订单元数据
【发布时间】:2016-12-30 00:07:21
【问题描述】:

当客户下订单时,是否可以自动将客户自定义字段的值复制到订单的自定义字段?

是否应该使用任何插件/扩展或通过后台自定义编码来完成?

此自定义字段不需要显示在客户订单视图中。当我们通过 API 获取订单时,我们只需要它来区分订单是由消费者下的还是批发商下的。

我是这个系统的新手,我做了很多研究,但找不到任何方向。

任何意见/建议将不胜感激。

【问题讨论】:

  • 感谢您的快速回复,@LoicTheAztec!我刚刚编辑了这个问题,希望它对你有意义。
  • 非常感谢,@LoicTheAztec 这是一段非常好的代码。我已将其标记为答案。我会试试看,如果我卡在某个地方,我会告诉你:)
  • 当您从后端手动创建订单时,有什么方法可以让它工作吗?
  • @LoicTheAztec,您能否确认我的解决方案是否实现了相同的目标?你可以在这里看到它:stackoverflow.com/questions/68793013/…

标签: php wordpress woocommerce custom-fields orders


【解决方案1】:

您可以使用 woocommerce_thankyou 钩子将此用户数据添加到订单元数据中:

add_action( 'woocommerce_thankyou', 'orders_from_processing_to_pending', 10, 1 );
function orders_from_processing_to_pending( $order_id ) {

    if ( ! $order_id )
        return;

    $order = wc_get_order( $order_id );
    $user_id = get_current_user_id();

    //Set HERE the meta key of your custom user field
    $user_meta_key = 'some_meta_key';

    // Get here the user custom field (meta data) value
    $user_meta_value = get_user_meta($user_id, $user_meta_key, true);


    if ( ! empty($user_meta_value) )
        update_post_meta($order_id, $user_meta_key, $user_meta_value);
    else
        return;

}

代码进入您的活动子主题(活动主题或任何插件文件)的 function.php 文件中。

此代码已经过测试并且可以工作。

之后,如果您想在管理员编辑订单后端或前端客户视图订单和电子邮件通知中显示该值,您将不得不使用更多代码和其他一些钩子......

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 2022-01-02
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2019-09-12
    • 2018-08-07
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多