用户在WooCommerce中再次登录时,从购物车中删除以前的商品

时间:2018-06-04 08:47:32

标签: php wordpress woocommerce

我有自己主题的WordPress版本4.9.5,以及WooCommerce作为在线商店解决方案。

想象一下,有些用户登录网站并在商店购物车中添加了一些商品。然后他退出网站,无论他关闭网页还是退出。一段时间后(无论他是否在同一台计算机上),当同一个用户访问网站(作为访客,无需登录)并在购物车中添加一些物品并进入结账时,WordPress会合并两个购物车(来自过去和目前添加在购物车中)。我需要删除旧项目并仅保留新项目。

实施例: (用户登录时的购物车内容)

  • 第1项
  • 第2项

(当用户是访客/退出时的购物车内容)

  • 第3项
  • 第4项

(结账时登录后的购物车内容)

  • 第1项
  • 第2项
  • 第3项
  • 第4项

我需要购物车才能保留:

  • 第3项
  • 第4项

我该怎么做?

3 个答案:

答案 0 :(得分:2)

结合Sedimu的答案和此链接中的一段代码: 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);
?>

答案 1 :(得分:0)

  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购物车到期的一般到期时间,请使用以下链接

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

    如果这有帮助,请告诉我,不要忘记将其标记为答案。

答案 2 :(得分:0)

尝试一下:

add_filter( 'woocommerce_persistent_cart_enabled', '__return_false' );

我对其进行了测试,并且对我有用。希望对您有帮助!