2017-10-18 144 views
0

我遇到woocommerce購物車的一個小問題。問題的Woocommerce,購物車和會話

說明:

說我登錄,我有3種產品在購物車中。如果我註銷,我的購物車中有0件產品。我添加了一個產品並重新登錄。我現在仍然擁有在註銷時添加的那個產品。這很好,因爲我想當你在結帳時導航和登錄時,你不希望舊的購物車項目突然彈出。現在,如果我註銷,我有0個產品,這也很好,因爲突然之間你變成了沒有人,你可以假設一個新用戶將承擔。但是,如果我用一個空的購物車重新登錄,我現在從一開始就擁有三種產品,而不是在上次訪問期間購買的產品。

我想達到什麼目的。默認情況下,在上述故事中,woocommerce會顯示一個購物車,其中包含一個預期的項目。但在我構建的主題中,我通過ajax加載了整個購物車。我有一個小功能,基本上只是這樣做:

function sp_get_cart() { 
    $cart = WC()->cart->get_cart(); 
    wp_send_json($cart); 
} 
add_action('wp_ajax_get_cart', 'sp_get_cart'); 
add_action('wp_ajax_nopriv_get_cart', 'sp_get_cart'); 

我也有整個登錄/註銷部分與阿賈克斯一起工作。我試圖在woocommerce代碼中找到我可能錯過的東西,但我找不到任何東西。我應該在處理登錄或註銷時做些具體的事情嗎?我認爲我只能依靠woocommerce的會話的默認行爲,但似乎有些事情中斷,並且當我用購物車中的物品登錄時,似乎這些新的購物車項目不會被添加到存儲在數據庫中的會話中,下一個登錄發生,以前的版本正在加載。任何幫助將非常感激。

編輯:這裏是註銷功能

function sp_logout() { 
    WC()->session->destroy_session(); 
    wp_logout(); 
    ob_clean(); 
    // $_SESSION = array(); 

    http_response_code(200); 
    wp_send_json(array('status' => 'OK')); 
    die(); 
} 
add_action('wp_ajax_logout', 'sp_logout'); 
add_action('wp_ajax_nopriv_logout', 'sp_logout'); 

回答

0

嘗試清除$ _SESSION全局變量,你的註銷功能 $_SESSION = array();

+0

我會盡力,明天早上,但使用不woocommerce自2.5以來的會話數據庫?我已經清除了註銷中的cookies。如果有幫助,我可以在明天粘貼註銷ajax函數。 –

+0

沒有運氣,我會編輯我的帖子以添加ajax註銷功能。 –