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

标签 php wordpress methods woocommerce orders

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

尽管我已经使用 $order->set_date_created 为订单设置了 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 属性在再次获得相同订单时消失并且在设置时没有写入数据库。请帮助找到潜在的错误并提出修复建议。

虽然,我可以在设置 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();

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

关于php - 使用 CRUD 方法设置订单创建日期并将其保存在 Woocommerce 3 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728562/

相关文章:

javascript - 如何在进一步执行 js 之前从循环中收集 $.get 的所有结果

Wordpress: "Custom Field"、 "Meta Box"和 "Taxonomy"之间的区别

python - 看门狗观察者法

java - 具有两个数组的方法。如果第一个数组中的值返回不为空,则必须使用其他数组的相应元素作为第二个方法的参数

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 如何将退格字符添加到字符串文字?

css - h1 :after badge not lining up properly

c# - 允许一个方法只接受数字?

php - 跨多个字段的搜索查询,包括 JOIN

php - Wordpress 中的 SQL SELECT 函数不起作用