使用CRUD方法设置订单创建日期并将其保存在WooCommerce 3中



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

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

// 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属性在再次获得相同顺序时消失并且设置时没有写入数据库。请帮助找到潜在的错误并提出修复建议。

虽然,我可以在设置date_created后传递$order对象,但另一个插件的函数需要order_id应该设置其date_created而不是NULL的订单。这就是为什么我设置date_created然后$order->get_id()传递给函数的原因。

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

// 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();

这次它应该有效,并且您不会获得空值。

最新更新