我需要检测何时成功创建了新的WooCommerce订单并将其设置为“处理中”,这是为了添加一些额外的功能等。在前端进行此操作就很好了,因为订单很容易挂上通过WooCommerce woocommerce_thankyou
或woocommerce_order_status_processing
钩子创建。
我遇到的问题是,在通过网站后端手动创建新订单时,我也希望这样做。我在通过手动添加订单时使用了一些自定义字段,该字段用于在创建订单时对其进行操作。不幸的是,尽管woocommerce_order_status_processing
确实适用于管理员订单,但它似乎在保存订单元之前触发了,因此,当我尝试检索任何元数据时,它为空。
为了解决这个问题,我尝试了WooCommerce hook for order creation from admin或此GitHub线程上的建议,这些线程将使用WordPress钩子wp_insert_post
或save_post_shop_order
({{1 }})。这样可以解决我的订单元问题,因为订单元保存后似乎会触发。
然而-它会触发每次,有更新或新帖子,因此我需要找到一种方法来检测它是否为新帖子。这些钩子上有一个save_post_{$post->post_type}
参数,用于显示“这是否是正在更新的现有帖子” ,但出于某种原因,即使在出现以下情况时,它始终都设置为true这是新的帖子/订单。
我可以想到的另一种可能的方法是按照this suggestion检查发布日期和修改日期,但是我只是认为必须有一种更好的方法!
$update
答案 0 :(得分:1)
您可以使用woocommerce_new_order
钩子:
add_action('woocommerce_new_order', function ($order_id) {
// your code
}, 10, 1);
答案 1 :(得分:0)
由于Woocommerce 3已实现partial index,因此存在一些专用钩子,您可以专门用于订单创建 :
在CRUD methods and data stores方法中,Abstract_WC_Order_Data_Store_CPT
create()
filter hook 使您可以在函数wp_insert_post()
中保存数据之前对其进行过滤。< / p>
在woocommerce_new_order_data
方法中,WC_Order_Data_Store_CPT
create()
动作挂钩允许您在创建订单时触发一些代码。
这是一个更好的选择,因为它仅用于 Woocommerce订单创建。