Woocommerce,购物车和会话

时间:2017-10-18 19:46:27

标签: javascript php ajax woocommerce

我遇到了woocommerce购物车的小问题。

问题描述:

说我已登录,购物车中有3件商品。如果我退出,我的购物车中有0件商品。我添加了一个产品并重新登录。我现在仍然在注销时添加了我添加的产品。这很好,因为我想当你导航并在收银台登录时,你不希望突然弹出旧的购物车物品。现在,如果我退出,我有0个产品,这也很好,因为突然你变成了没人,你可以假设一个新用户将采取。但是,如果我用一辆空车重新登录,我现在从一开始就有3件产品,而不是我上次访问时的1件产品。

我想要实现的目标。默认情况下,在上面的故事中,woocommerce会显示一个带有预期的1项的购物车。但在我构建的主题中,我通过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');

我还有整个signon / signout部分使用ajax。我试图在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');

1 个答案:

答案 0 :(得分:0)

尝试在注销功能上清除$ _SESSION全局变量 $_SESSION = array();