簡體   English   中英

Woocommerce:在我的網站下訂單后強制清除購物車?

[英]Woocommerce: force to clear the cart after an order is placed in my site?

我在我的 Woocommerce 網站中經常遇到一個問題,即在我的網站上下訂單后購物車沒有被清除。

我想在 my_theme/functions.php 中添加一個代碼以確保購物車被清除。 我設法創建了此代碼(如下)。

這足以得到我需要的東西嗎?

add_action('woocommerce_new_order','clear_the_cart');

    function clear_the_cart() 
    {
        global $woocommerce;
        $woocommerce->cart->empty_cart();
    }

我是否需要添加代碼來獲取用戶 ID,然后清除該用戶的購物車?

如果為每個用戶而不是所有用戶清除購物車,我想我將需要獲取當前用戶 ID,然后在執行代碼行后為該用戶清除購物車。

我的問題是我應該按用戶還是全局清理購物車?

我知道如何獲取用戶 ID:

$user_ID = get_current_user_id();
....

添加到 function.php 后,您的方法應該可以正常工作。

您也可以使用WC()->cart->empty_cart();調用它WC()->cart->empty_cart(); . empty_cart()有一個$clear_persistent_cart參數,但默認為 true,所以你的代碼沒問題。

如果woocommerce_before_cart_emptied鈎子上沒有任何奇怪的鈎子,您可以檢查您的主題和插件,該鈎子在empty_cart()方法的開頭觸發。

empty_cart()只會清空當前用戶的購物車(傳遞訂單的那個),如果此代碼沒有被其他服務器執行(例如:隊列):客戶的會話數據將可用,因此可以清空購物車. 這不會清除每個客戶購物車的內容。

現在,Woocommerce 應該在訂單完成后默認清除購物車。 這里有幾件事情可以嘗試和測試:

  • 通過add_action( 'woocommerce_new_order', 'clear_the_cart', 50, 3 );更改您的 add_action add_action( 'woocommerce_new_order', 'clear_the_cart', 50, 3 ); , 增加 $priority 最后運行
  • 如果符合您的要求,您可以使用woocommerce_order_status_completed鈎子進行測試
  • 每個客戶都會發生這種情況嗎? 而你直接在本地、開發或生產? 如果是這樣,您可以嘗試在clear_the_cart()方法中添加wp_die()或相關的,以驗證此代碼是否在您的訂單后觸發
  • 你使用自定義的woocommerce支付網關嗎? 請添加 WP 版本、Woocommerce 版本、支付網關等詳細信息。

請注意,某些插件(以及掛鈎上的一些自定義代碼)可以防止購物車在訂單完成后清空(請參閱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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