首页 > 解决方案 > 使用 CRUD 方法设置订单创建日期并将其保存在 Woocommerce 3 中

问题描述

我正在为 Woocommerce 开发一个自定义插件,它使用其他一些 Woocommerce 扩展提供的功能。我在 Woocommerce 中遇到了一个奇怪的问题。

虽然我已经设置date_created了一个订单,$order->set_date_created但是在再次获得相同的订单后,wc_get_order( $order->get_id() )返回的$order对象没有date_created设置,它是NULL. 下面带有注释的代码应该清楚,我想说的是:

// returns a new order object from order post_id
$order = wc_get_order( $post->ID );
$order->set_date_created( time() );

// Getting expected WC_DateTime object
$order->get_date_created();


/***** Here's the problem ******/
$same_order = wc_get_order( $order->get_id() );

// returns NULL instead of WC_DateTime object
$same_order->get_date_created();

所以我的问题是为什么该date_created属性在再次获得相同的订单时消失并且在设置时没有写入数据库。请帮助找到潜在的错误并建议对此进行修复。

虽然,我可以$order在设置之后传递对象,date_created但是来自另一个插件的函数需要order_id一个应该有它的命令date_createdset 而不是NULL。这就是我设置date_created然后传递$order->get_id()给函数的原因。

标签: phpwordpressmethodswoocommerceorders

解决方案


您还需要保存数据……请尝试以下操作:

// Get an instance of the WC_Order object
$order = wc_get_order( $post->ID );

// Get an instance of the current WC_DateTime object
$date_time = new WC_DateTime();

// Set it in the order
$order->set_date_created( $date_time );

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

这次它应该可以工作了,你不会得到一个空值。


推荐阅读