2017-10-18 138 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注销功能。 –