【问题标题】:How to remove woocommerce added cart items and redirect to checkout?如何删除 woocommerce 添加的购物车项目并重定向到结帐?
【发布时间】:2018-07-08 05:16:55
【问题描述】:

我有一个 Woocommerce 表单来“添加资金”。它有一个金额输入字段(20 美元、30 美元等)和一个提交按钮,该按钮重定向到购物车页面,输入金额为总金额。

重定向到结账功能正常,但如果用户放弃购物车并尝试再次订购,购物车商品不会被移除。

我为重定向到结帐尝试了多种解决方案,但只有一种有效。

重定向到结帐的工作解决方案:

WooCommerce - Skip cart page redirecting to checkout page

无法重定向到结帐的解决方案:

https://wordpress.stackexchange.com/questions/267071/redirect-to-woocommerce-checkout-after-adding-to-cart-item-already-in-cart

Woocommerce add to cart button redirect to checkout

注意我已经为重定向添加了有效和无效的解决方案 结帐,因为它可以提供关于为什么空购物车的见解 解决方案不起作用。

如果在添加新产品之前清空购物车,则任何解决方案都不起作用:

https://gist.github.com/viniciusrtf/b49403b5f87dcd7699c1

https://hungred.com/how-to/empty-woocommerce-cart-adding-item/

https://wordpress.stackexchange.com/questions/267071/redirect-to-woocommerce-checkout-after-adding-to-cart-item-already-in-cart

使用 Woocommerce 3.2.6 和 WordPress 4.9.2

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce


    【解决方案1】:

    首先,您需要在 WooCommerce 设置 > 产品 > 显示中的“添加到购物车行为”中启用复选框:成功添加后重定向到购物车页面

    那么你将需要以下 3 个钩子函数:

    1) 加入购物车前清空购物车(如果购物车不为空)

    add_filter( 'woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3 );
    function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
        if( ! WC()->cart->is_empty())
            WC()->cart->empty_cart();
        return $passed;
    }
    

    2) 添加到购物车重定向到结帐:

    add_filter( 'woocommerce_add_to_cart_redirect', 'add_to_cart_checkout_redirection', 10, 1 );
    function add_to_cart_checkout_redirection( $url ) {
        return wc_get_checkout_url();
    }
    

    3) 跳过购物车页面重定向到结帐:

    add_action('template_redirect', 'skip_cart_page_redirection_to_checkout');
    function skip_cart_page_redirection_to_checkout() {
        if( is_cart() )
            wp_redirect( wc_get_checkout_url() );
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。

    经过测试和工作(在 Storefront 主题上使用 Woocommerce 3.2.6 和 WordPress 4.9.2)

    【讨论】:

    • 在添加新商品之前购物车没有清空,并给出错误“您无法将另一个“产品”添加到您的购物车”。我想知道我们是否可以使用清除购物车会话功能。我是php的新手。 function wc_empty_cart() { if ( ! isset( WC()->cart ) || '' === WC()->cart ) { WC()->cart = new WC_Cart(); } WC()->cart->empty_cart( false ); }
    • @mesumosu 我没有收到任何错误。我已经以所有可能的方式测试了代码。所以你应该尝试删除之前,其他相关的自定义代码。此问题也可能来自您的主题或插件。
    • 非常感谢!!!通过向我指出插件角度,您节省了我数小时的挫败感。我正在使用一个免费的 Woocommerce 钱包插件,它将$product_id 重新分配给不同的东西。使用新分配的变量代替 $product_id 并且您的空购物车解决方案(代码 1)有效。因此,这是一个值得学习的教训,当使用 woocommerce 插件时,我们必须检查插件中的变量 $product_id$cart_item_key。好吧,我能说什么,你是一个了不起的支持!!!!
    • 谢谢。在 woocommerce 4+ 上不起作用,您可以更新 woocomerce 4 和 wordpress 5 的代码吗?
    猜你喜欢
    • 2013-03-13
    • 2017-04-21
    • 2014-08-30
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多