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

时间:2018-08-30 10:01:12

标签: php wordpress woocommerce hook-woocommerce orders

我需要检测何时成功创建了新的WooCommerce订单并将其设置为“处理中”,这是为了添加一些额外的功能等。在前端进行此操作就很好了,因为订单很容易挂上通过WooCommerce woocommerce_thankyouwoocommerce_order_status_processing钩子创建。

我遇到的问题是,在通过网站后端手动创建新订单时,我也希望这样做。我在通过手动添加订单时使用了一些自定义字段,该字段用于在创建订单时对其进行操作。不幸的是,尽管woocommerce_order_status_processing确实适用于管理员订单,但它似乎在保存订单元之前触发了,因此,当我尝试检索任何元数据时,它为空。

为了解决这个问题,我尝试了WooCommerce hook for order creation from admin或此GitHub线程上的建议,这些线程将使用WordPress钩子wp_insert_postsave_post_shop_order({{1 }})。这样可以解决我的订单元问题,因为订单元保存后似乎会触发。

然而-它会触发每次,有更新或新帖子,因此我需要找到一种方法来检测它是否为新帖子。这些钩子上有一个save_post_{$post->post_type}参数,用于显示“这是否是正在更新的现有帖子” ,但出于某种原因,即使在出现以下情况时,它始终都设置为true这是新的帖子/订单。

总结一下:

  • 我需要一个通过后端创建订单/发布元之后触发的WordPress / WooCommerce挂钩,并且只有在新创建且未更新订单时才运行此方法。

我可以想到的另一种可能的方法是按照this suggestion检查发布日期和修改日期,但是我只是认为必须有一种更好的方法!

这是我当前的代码,以防万一

$update

2 个答案:

答案 0 :(得分:1)

您可以使用woocommerce_new_order钩子:

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

答案 1 :(得分:0)

由于Woocommerce 3已实现partial index,因此存在一些专用钩子,您可以专门用于订单创建

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