2017-10-18 11 views
0

woocommerce의 장바구니에 약간의 문제가 있습니다. 문제의Woocommerce, cart 및 session

설명 :

내가 로그인하고 말은, 나는 카트에서 3 개 제품이있다. 로그 아웃하면 장바구니에 0 개의 제품이 있습니다. 제품을 추가하고 다시 로그인하십시오. 지금은 로그 아웃되는 동안 추가 한 제품을 사용하고 있습니다. 네가 탐색하고 로그인 할 때 갑자기 낡은 장바구니 아이템이 튀어 나오길 원하지 않는다고 생각하니 괜찮습니다. 이제 로그 아웃하면 제품이 0 개가됩니다. 갑자기 아무도되지 않아 새로운 사용자가 계속 사용할 수 있다고 가정 할 수 있습니다. 그러나 빈 카트를 사용하여 다시 로그인 할 때, 이전에 방문했을 때 가지고 있었던 1 개 대신에 처음부터 3 개의 제품이 있습니다.

달성하고자하는 것. 기본적으로 위의 이야기에서 woocommerce는 예상했던 것과 같은 항목 1 개가있는 카트를 표시합니다. 그러나 내가 만든 테마에서는 아약스를 통해 장바구니 전체를로드합니다.

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'); 

가 나는 또한 아약스 작업 전체 인 온/signout 부분이 : 나는 기본적으로 그냥이 작업을 수행 약간의 기능을 가지고있다. 내가 누락되었을 수있는 물건에 대해 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 = array();

+0

기능에, $ _SESSION 전역 변수를 삭제하려고하지만를 사용 woocommerce되지 않는다 2.5 이후 세션에 대한 데이터베이스? 이미 로그 아웃시 쿠키를 삭제합니다. 도움이된다면 내일 로그 아웃 아약스 함수를 붙여 넣을 수 있습니다. –

+0

행운은 아약스 로그 아웃 기능을 추가하기 위해 내 게시물을 편집 할 것입니다. –

관련 문제