简体   繁体   English

在 WooCommerce 3+ 中为订单添加自定义字段

[英]Add a custom field to an order in WooCommerce 3+

In WooCommerce, I would like to add a new custom field to order details.在 WooCommerce 中,我想添加一个新的自定义字段来订购详细信息。 I now that I can use use the code below to create a new custom field 'referenceNumber' and adds in it "ordercreated" value:我现在可以使用下面的代码来创建一个新的自定义字段“referenceNumber”并在其中添加“ordercreated”值:

update_post_meta($order_id, 'referenceNumber', 'ordercreated']);

What I would like is to make that through checkout once an order is placed.我想要的是在下订单后通过结帐进行。

But it doesn't work it doesn't add a new custom field to order details page and don't add the value 'ordercreated', as you can see in this screenshot:但它不起作用,它不会向订单详细信息页面添加新的自定义字段,也不会添加值“ordercreated”,如您在此屏幕截图中所见:

截屏

So the question is how to add a custom field when an order is placed in WooCommerce?那么问题来了,WooCommerce 下单时如何添加自定义字段?

To add a custom field to an order you can use:要向订单添加自定义字段,您可以使用:

  • WordPress update_post_meta() function (from an order id) : WordPress update_post_meta()函数(来自订单 ID)

     $order_id = $order->get_id(); // If needed update_post_meta($order_id, 'referenceNumber', 'ordercreated'); // add and save the custom field
  • WooCommerce WC_Data update_meta_data() method (from the order object or the order id) : WooCommerce WC_Data update_meta_data()方法(来自订单对象或订单 ID)

     $order = wc_get_order( $order_id ); // If needed: Get the WC_Order object from the order Id update_meta_data('referenceNumber', 'ordercreated'); // Add the custom field $order->save(); // Save the data

Where referenceNumber is the meta key and ordercreated is the meta value .其中referenceNumber元键ordercreated元值 Both works.两者都有效。


Now to add a custom field to an order when customer place an order , you can use:现在要在客户下订单向订单添加自定义字段,您可以使用:

  • woocommerce_checkout_create_order action hook (before order data is saved - used to adjust order data before it's saved) : woocommerce_checkout_create_order动作挂钩(在保存订单数据之前 - 用于在保存之前调整订单数据)

     add_action( 'woocommerce_checkout_create_order', 'add_custom_field_on_placed_order', 10, 2 ); function add_custom_field_on_placed_order( $order, $data ){ $order->update_meta_data( 'referenceNumber', 'ordercreated' ); }
  • woocommerce_checkout_update_order_meta action hook (order already exist - used to add custom meta data) : woocommerce_checkout_update_order_meta动作挂钩(订单已存在 - 用于添加自定义元数据)

     add_action( 'woocommerce_checkout_create_order', 'add_custom_field_on_placed_order', 10, 2 ); function add_custom_field_on_placed_order( $order_id, $data ){ $order->update_meta_data( 'referenceNumber', 'ordercreated' ); }
  • woocommerce_checkout_order_created action hook (order already exist - to trigger an action or also to add custom meta data) : woocommerce_checkout_order_created动作挂钩(订单已存在 - 触发动作或添加自定义元数据)

     add_action( 'woocommerce_checkout_order_created', 'add_custom_field_on_placed_order', 10, 2 ); function add_custom_field_on_placed_order( $order_id, $data ){ $order->update_meta_data( 'referenceNumber', 'ordercreated' ); // Add the custom field $order->save(); // Save data (as order exist yet) }

    Or:或者:

     add_action( 'woocommerce_checkout_order_created', 'add_custom_field_on_placed_order' ); function add_custom_field_on_placed_order( $order ){ update_post_meta($order->get_id(), 'referenceNumber', 'ordercreated'); }

Code goes in functions.php file of your active child theme (or active theme).代码位于活动子主题(或活动主题)的 functions.php 文件中。 Tested and works.测试和工作。

Hi i had a similar requirement few days ago, as i needed to add new field at checkout.嗨,几天前我有类似的要求,因为我需要在结帐时添加新字段。 Following article helped me.以下文章帮助了我。 You can check it too.你也可以检查一下。 Here is the link.链接在这里。 Basically you will have a write a function which will use woo commerce hook "woocommerce_default_address_fields" https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/基本上,您将编写一个函数,该函数将使用 woo commerce 挂钩“woocommerce_default_address_fields” https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM