簡體   English   中英

用於從管理員創建訂單的 WooCommerce 掛鈎

[英]WooCommerce hook for order creation from admin

在我的自定義插件(在 WooCommerce 2.6.x 和 3.x 中工作)中,我需要在創建新訂單時獲取訂單 ID。 我嘗試了不同的鈎子,但它們僅在客戶創建訂單時才起作用,而不是在從管理員創建訂單時起作用。

我試過:

  • woocommerce_new_order
  • woocommerce_thankyou
  • woocommerce_checkout_order_processed
  • woocommerce_checkout_update_order_meta

更新

最后我用了這個:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM