为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
汪汪一只猫 2024-01-19 10:26:16
在 WooCommerce 中,我想添加一个新的自定义字段来订单详细信息。现在我可以使用下面的代码创建一个新的自定义字段“referenceNumber”并在其中添加“ordercreated”值:update_post_meta($order_id, 'referenceNumber', 'ordercreated']);我想要的是在下订单后通过结帐来进行。但它不起作用,它不会向订单详细信息页面添加新的自定义字段,也不会添加值“ordercreated”,正如您在此屏幕截图中看到的:那么问题是在 WooCommerce 下订单时如何添加自定义字段?
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

要将自定义字段添加到订单中,您可以使用:


WordPressupdate_post_meta()函数(来自订单 ID):


$order_id = $order->get_id(); // If needed


update_post_meta($order_id, 'referenceNumber', 'ordercreated'); // add and save the custom field

WooCommerceWC_Data update_meta_data()方法(来自订单对象或订单 ID):


$order = wc_get_order( $order_id ); // If needed: Get the WC_Order object from the order Id


$order->update_meta_data('referenceNumber', 'ordercreated'); // Add the custom field


$order->save(); // Save the data

其中referenceNumber是元键,ordercreated是元值。两者都有效。


现在,要在客户下订单时向订单添加自定义字段,您可以使用:


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 操作挂钩(订单已存在 - 用于添加自定义元数据):


add_action( 'woocommerce_checkout_update_order_meta', 'add_custom_field_on_placed_order', 10, 2 );

function add_custom_field_on_placed_order( $order_id, $data ){

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

}

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)

}

或者:


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

}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。


查看完整回答
反对 回复 2024-01-19
?
Qyouu

TA贡献1786条经验 获得超11个赞

您好,几天前我有类似的要求,因为我需要在结账时添加新字段。以下文章对我有帮助。你也可以检查一下。链接在这里。基本上,您将编写一个函数,该函数将使用 woocommerce 挂钩“woocommerce_default_address_fields” https://wisdmlabs.com/blog/add-custom-fields-woocommerce-checkout-page/


查看完整回答
反对 回复 2024-01-19
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信