在 WooCommerce 中更新与订单相关的地址字段

我正在尝试更新与 woocommerce 订单相关的数据。我可以检索现有数据但不能更新。在开始之前,我已经手动创建了一个订单,方法是转到仪表板的订单页面,单击添加订单按钮,然后填写运输和账单地址详细信息并添加一些产品。


然后我在我的主题中创建了woocommerce/checkout/form-pay.php的副本,并在其中添加了代码:


$invoiceid = $order->id;

echo invoiceid;

这将返回与 URL 中对应的 ID 号,所以我知道我在正确的位置。接下来,我尝试深入了解与订单相关的地址详细信息。在我有一个工作流程之前,为了保持简单,我将更新“Billing First Name”字段。我输入:


$billing_first_name = $order->get_billing_first_name();

echo $billing_first_name; 

同样,它返回我在手动创建订单时在该字段中输入的值。到目前为止,一切都很好。但是,当我尝试更新值时,事情就崩溃了。


在阅读了关于 CRUD 的 WooCommerce 页面后,我尝试了:


$order->set_billing_first_name( 'Foo' );

$order->save;

但值不会更新。基于此页面,我也尝试过:


$order->update_meta_data( billing_first_name, 'foo' );

$order->save;

这也没有导致该字段被更新。


更新此字段的正确过程/语法是什么?


慕运维8079593
浏览 111回答 1
1回答

三国纷争

您可以使用订单 ID 更新订单元数据。这是您可以根据需要更改挂钩的片段。需要将此代码放在functions.php中。add_action( 'woocommerce_thankyou', 'digger_checkout_save_user_meta');function digger_checkout_save_user_meta( $order_id ) {   //$order = wc_get_order( $order_id );  // $user_id = $order->get_user_id();      update_post_meta( $order_id, '_billing_first_name', 'first name here');      update_post_meta($order_id, '_billing_last_name','last name' ); }
打开App,查看更多内容
随时随地看视频慕课网APP