Удалите предыдущие товары из корзины, когда пользователь снова войдет в WooCommerce - PullRequest
0 голосов
/ 04 июня 2018

У меня WordPress версии 4.9.5 с собственной темой и WooCommerce в качестве решения для интернет-магазина.

Представьте, что какой-то пользователь заходит на сайт и добавляет некоторые товары в корзину.Затем он выходит из веб-сайта, независимо от того, закрывает ли он веб-страницу или выходит из системы.Через некоторое время (не имеет значения, находится он на том же компьютере или нет), когда один и тот же пользователь посещает веб-сайт (как гость, без входа в систему) и добавляет некоторые элементы в корзину покупок и переходит к оформлению заказа, WordPress объединяет две корзины (элементы изпрошлое и в настоящее время добавлено в корзину).Мне нужно удалить старые элементы и оставить только новые.

Пример: (содержимое корзины, когда пользователь вошел в систему)

  • Элемент 1
  • Элемент 2

(содержимое корзины, когда пользователь гость / вышел из системы)

  • Элемент 3
  • Элемент 4

(содержимое корзины послевход в систему во время оформления заказа)

  • Элемент 1
  • Элемент 2
  • Элемент 3
  • Элемент 4

Iнужна только корзина:

  • Пункт 3
  • Пункт 4

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Сочетание ответа Седиму и фрагмента кода по этой ссылке: https://gist.github.com/maxrice/7dc500cd07fa70e2fb5251293d22e485 решение вашей проблемы может быть таким:

<?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);
?>
0 голосов
/ 05 июня 2018
  1. Добавьте приведенный ниже код в файл функций, если вы хотите очистить корзину при обнаружении логина.

    <?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. Используйте эту ссылку ниже, еслиВы хотите установить общее время истечения срока действия корзины woocomerce

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

Дайте мне знать, если это поможет, и не забудьте пометить его как ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...