Php Woocommerce 3中专门用于创建订单的挂钩

Php Woocommerce 3中专门用于创建订单的挂钩,php,wordpress,woocommerce,hook-woocommerce,orders,Php,Wordpress,Woocommerce,Hook Woocommerce,Orders,我需要检测新的WooCommerce订单何时成功创建并设置为“处理”-这是为了添加一些额外的功能等。在前端这样做很好,因为通过WooCommerceWooCommerce\u Thankyu或woocommerce\u order\u status\u processinghooks 我的问题是,在通过网站后端手动创建新订单时,我也希望这样做。我在通过手动添加订单时使用了一些自定义字段,用于在创建订单时操纵订单。不幸的是,尽管woocommerce\u order\u status\u proc

我需要检测新的WooCommerce订单何时成功创建并设置为“处理”-这是为了添加一些额外的功能等。在前端这样做很好,因为通过WooCommerce
WooCommerce\u Thankyu
woocommerce\u order\u status\u processing
hooks

我的问题是,在通过网站后端手动创建新订单时,我也希望这样做。我在通过手动添加订单时使用了一些自定义字段,用于在创建订单时操纵订单。不幸的是,尽管
woocommerce\u order\u status\u processing
对管理订单有效,但它似乎在订单元数据保存之前触发,因此当我尝试检索任何元数据时,它是空的

为了解决这个问题,我尝试了关于这个主题的建议,即使用WordPress钩子
wp\u insert\u post
save\u post\u shop\u order
save\u post{$post->post\u type}
)。这可以解决我的订单元问题,因为它似乎会在订单元保存后触发

但是-每当有更新或新帖子时,它都会触发,因此我需要找到一种方法来检测它是否是新帖子。这些钩子上有一个
$update
参数,用于显示“这是否是正在更新的现有帖子”,但出于某种原因,即使是新帖子/订单,它似乎总是设置为true

总结如下:
  • 我需要一个WordPress/WooCommerce钩子,它是在通过后端创建order/post meta后触发的,并且只有在新创建订单且未更新订单时才运行它
我能想到的唯一可能的其他方法是检查发布日期和修改日期,但我只是认为一定有更好的方法

这是我目前的代码以防万一
自Woocommerce 3实现以来,有一些专用挂钩,您可以专门使用这些挂钩创建订单

  • 在方法中,filter hook允许您在创建时保存函数
    wp\u insert\u post()
    之前过滤函数中的数据

  • 在该方法中,操作挂钩允许您在创建订单时触发一些代码


这是一个更好的选择
,因为它只用于创建Woocommerce订单

您可以使用
Woocommerce\u new\u订单
挂钩:

add_action('woocommerce_new_order', function ($order_id) {
     // your code
}, 10, 1);

我以前通过在$\u POST数组中检查'auto\u draft'=>1解决了这个问题。似乎会有一个更优雅的解决方案,但这在我的情况下确实起了作用。我不是希望有人能用更好的解决方案来回答我的问题。@user3080408-公平地说,我只是尝试了一下,它按照我的预期工作,所以谢谢你!我们将看看是否有其他人添加了一个答案,因为我认为WordPress会有一个更优雅的方式来做这件事,但做得很好@斯图尔特,你试过用钩子代替新订单吗?
add_action('woocommerce_new_order', function ($order_id) {
     // your code
}, 10, 1);