[英]WooCommerce hook for order creation from admin
在我的自定義插件(在 WooCommerce 2.6.x 和 3.x 中工作)中,我需要在創建新訂單時獲取訂單 ID。 我嘗試了不同的鈎子,但它們僅在客戶創建訂單時才起作用,而不是在從管理員創建訂單時起作用。
我試過:
更新
最后我用了這個:
add_action('wp_insert_post', function($order_id)
{
if(!did_action('woocommerce_checkout_order_processed')
&& get_post_type($order_id) == 'shop_order'
&& validate_order($order_id))
{
order_action($order_id);
}
});
其中validate_order是:
function validate_order($order_id)
{
$order = new \WC_Order($order_id);
$user_meta = get_user_meta($order->get_user_id());
if($user_meta)
return true;
return false;
}
感謝validate_order ,當您開始創建訂單時,不會執行該操作。 我使用!did_action('woocommerce_checkout_order_processed')
因為如果訂單是由客戶創建的,我不希望執行該操作(我有一個特定的操作,使用woocommerce_checkout_order_processed
)。
woocommerce_new_order
鈎子在訂單創建后被調用:
add_action('woocommerce_new_order', function ($order_id) {
// ...
}, 10, 1);
如果您使用管理頁面.../wp-admin/post-new.php?post_type=shop_order
創建新訂單,那么可能沒有WooCommerce
掛鈎來執行此操作,因為此訂單是由 WordPress 核心創建的。
但是,WordPress 操作'save_post_shop_order'
將使用作為訂單 ID 的$post_ID
調用。
請參閱...\\wp-includes\\post.php
函數wp_insert_post()
。
您可以使用此鈎子woocommerce_process_shop_order_meta
是在從 WordPress 管理員手動創建訂單時觸發的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.