Mam WordPress w wersji 4.9.5 z naszym własnym motywem i Woocommerce jako rozwiązanie sklepu internetowego.

Wyobraź sobie, że niektórzy użytkownik loguje się na stronie i dodaje niektóre przedmioty w koszyku sklepowym. Następnie wychodzi z witryny, niezależnie od tego, czy zamyka stronę internetową ani się loguje. Po pewnym czasie (nie ma znaczenia? przeszłość i obecnie dodawana wózek). Muszę usunąć stare przedmioty i zachować tylko nowe przedmioty.

Przykład: (Zawartość koszyka, gdy użytkownik jest zalogowany)

  • Przedmiot 1
  • Pozycja 2

(Zawartość koszyka, gdy użytkownik jest gościem / wylogowany)

  • Pozycja 3
  • Punkt 4.

(Zawartość koszyka po zalogowaniu się podczas kasy)

  • Przedmiot 1
  • Pozycja 2
  • Pozycja 3
  • Punkt 4.

Potrzebuję koszyka, aby zachować tylko:

  • Pozycja 3
  • Punkt 4.

Jak mam to zrobić?

3
Alek_86 4 czerwiec 2018, 11:47

3 odpowiedzi

Najlepsza odpowiedź

Łącząc odpowiedź Sedimu i kawałek kodu z tego linku: https://gist.github.com/maxrice/7dc500CD07FA70E2FB5251293D22E485 Rozwiązanie problemu może być:

<?php
function clear_persistent_cart_after_login( $user_login, $user ) {
    $blog_id = get_current_blog_id();
    // persistent carts created in WC 3.1 and below
    if ( metadata_exists( 'user', $user->ID, '_woocommerce_persistent_cart' ) ) {
        delete_user_meta( $user->ID, '_woocommerce_persistent_cart' );
    }

    // persistent carts created in WC 3.2+
    if ( metadata_exists( 'user', $user->ID, '_woocommerce_persistent_cart_' . $blog_id ) ) {
        delete_user_meta( $user->ID, '_woocommerce_persistent_cart_' . $blog_id );
    }
}
add_action('wp_login', 'clear_persistent_cart_after_login', 10, 2);
?>
4
halfer 1 wrzesień 2018, 15:37

Spróbuj tego:

add_filter( 'woocommerce_persistent_cart_enabled', '__return_false' );

Przetestowałem to i działa dla mnie. Mam nadzieję, że Ci to pomoże!

2
Maksym Berezhnoy 24 listopad 2019, 20:19
  1. Dodaj poniższy kod do pliku funkcyjnego, jeśli chcesz wyczyścić wózek, gdy zostanie wykryty login.

    <?php
    function clear_cart_afer_login( $user_login, $user ) {
    //For removing all the items from the cart
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    }
    add_action('wp_login', 'clear_cart_afer_login', 10, 2);
    ?>
    
  2. Użyj tego linku poniżej, jeśli chcesz ustawić ogólny czas wygaśnięcia wygaśnięcia Woocommerce Cart

https://www.tmdhosting.com/kb/question/how-to-set-Cart-expiration-in-woocommerce/

Daj mi znać, jeśli to pomaga i nie zapomnij zaznaczyć go jako odpowiedź.

0
Sodimu Segun Michael 5 czerwiec 2018, 09:50