WooCommerce - 页面重载上的空车

时间:2018-02-04 06:42:59

标签: php wordpress woocommerce

我已经在我的课程会员网站上跳过购物车,所以'立即购买'带你直接结帐。

但是,如果您在点击“立即购买”时登录然后在没有购买的情况下退出,下次您登录时该商品仍保留在购物车中。如果您在下次访问期间购买同一商品,则会显示"此商品已在您的购物车中"但由于我从前端隐藏了购物车,他们无法访问它。

当页面使用WooCommerce重新加载时是否可以清空购物车,因此当用户点击“立即购买”时,它总是直接结帐?

2 个答案:

答案 0 :(得分:1)

似乎你是在单独销售产品。在此解决方案中,我们绕过了过滤器挂钩woocommerce_add_to_cart_sold_individually_found_in_cart。当$found_in_carttrue时,用户会收到消息“此商品已在您的购物车中”。这就是我们将数量重置为1的原因。有关详细信息,请查看https://docs.woocommerce.com/wc-apidocs/source-class-WC_Cart.html#1064

function op_bypass_add_to_cart_sold_individually_found_in_cart( $found_in_cart, $product_id ) {
    if ( $found_in_cart ) {
        $cart_contents = WC()->cart->get_cart_contents();
        foreach ( $cart_contents as $key => $item ) {
            if ( $product_id === $item['product_id'] ) {
                WC()->cart->set_quantity( $key, 1 );
                break;
            }
        }
        return false;
    }
    return $found_in_cart;
}
add_filter( 'woocommerce_add_to_cart_sold_individually_found_in_cart', 'op_bypass_add_to_cart_sold_individually_found_in_cart', 10, 2 );

答案 1 :(得分:0)

在我的情况下“WC() - > cart-> set_quantity($ key,1);”从答案@obiPlabon没有正常工作,所以我简化了功能。

由于$ found_in_cart只有当购物车中单独销售的产品数量超过一个时才会启动,我决定简化代码,只是在运行时重定向到结帐页面。

if ( $found_in_cart ) {
        global $woocommerce;
        wp_redirect( wc_get_checkout_url() );
        exit;
}