wordpress - Woocommerce 购物车未清算

标签 wordpress woocommerce cart checkout w3-total-cache

我知道会有这种类型的问题,但我已经尝试了几乎所有的选项,但都不走运,所以我在这里问。

我有一个问题,即订单完成后 woocommerce 中的 cart 不是空的,而且一些用户只是将商品添加到购物车然后不去结账,并且在几天后再次回来他们仍然看到旧购物车。

我认为这可能是缓存问题,因为我正在使用 W3-total-cache 插件。

我想在结账后清除购物车数据,或者如果用户将商品添加到购物车而不是结账,过一会儿又回来购物,那么购物车必须是空的并且不应将旧 session 存储到购物车。

我试过下面的代码但没有成功:

function nom_empty_cart_init_login(){
    $opt = get_option('nom_empty_cart_browser_close_do_login');
    $opt = $opt != 1 ? false : true;

    if( $opt ){
        session_destroy();
    }
}

//  destroy session on user logout
function nom_empty_cart_init_logout(){
    $opt = get_option('nom_empty_cart_browser_close_do_logout');
    $opt = $opt != 1 ? false : true;

    if( $opt ){
        session_destroy();
    }
}

add_action('admin_menu','nom_empty_cart_init_admin_init');
function nom_empty_cart_init_admin_init(){
    add_options_page( 'Woocommerce Clear Cart on Browser Closing', 'WC Clear Cart on Browser Close', 'manage_options', 'wc-clear-cart-on-browser-close', 'wc_clear_cart_on_browser_close' );    
}

function wc_clear_cart_on_browser_close(){

    if( isset( $_REQUEST['save_accconc'] ) and wp_verify_nonce($_REQUEST['wc-clear-cart-on-browser-close-name'],'wc-clear-cart-on-browser-close-action')):

        //  SAVING THE FORM DATA

            //  enable wcccobc
            if( isset($_REQUEST['enable_wcccobc']) )
                update_option('nom_empty_cart_browser_close_enable',1);

            //  enable wcccobc on login
            if( isset($_REQUEST['enable_wcccobc_on_login']) )
                update_option('nom_empty_cart_browser_close_do_login',1);

            //  enable wcccobc on logout
            if( isset($_REQUEST['enable_wcccobc_on_logout']) )
                update_option('nom_empty_cart_browser_close_do_logout',1);


        //  SAVING ;) ENDS

    endif;

    ?>
    <div class="wrap">
        <div class="inside">
            <h2>Woocommerce Clear Cart on Browser Closing</h2>
            <p>Note: the cart will be empty if the visitor close the whole browser, not just the widow. (will be updated soon)</p>

            <form action="<?php admin_url('options-general.php?page=wc-clear-cart-on-browser-close');?>" method="post">
                <?php wp_nonce_field('wc-clear-cart-on-browser-close-action','wc-clear-cart-on-browser-close-name')?>
                <p>
                    <input id="enable_wcccobc" type="checkbox" class="checkbox" name="enable_wcccobc" value="1" <?php checked(get_option('nom_empty_cart_browser_close_enable'),'1');?>>
                    <label for="enable_wcccobc" >Enable clear cart on browser closing</label>                   
                </p>
                <p>
                    <input id="enable_wcccobc_on_login" type="checkbox" class="checkbox" name="enable_wcccobc_on_login" value="1" <?php checked(get_option('nom_empty_cart_browser_close_do_login'),1);?>>
                    <label for="enable_wcccobc_on_login" >Enable clear cart on on user login</label>                    
                </p>
                <p>
                    <input id="enable_wcccobc_on_logout" type="checkbox" class="checkbox" name="enable_wcccobc_on_logout" value="1" <?php checked(get_option('nom_empty_cart_browser_close_do_logout'),1);?>>
                    <label for="enable_wcccobc_on_logout">Enable clear cart on user logout</label>                  
                </p>
                <p>
                    <input type="submit" class="button-primary" value="Save" name="save_accconc">
                </p>
            </form>
        </div>
    </div>
    <?php 
}

最佳答案

我正在使用来自@shoelaced 的方法并且它有效。 编辑主题的 functions.php

add_action( 'woocommerce_payment_complete', 'order_received_empty_cart_action', 10, 1 );
function order_received_empty_cart_action( $order_id ){
    WC()->cart->empty_cart();
}

关于wordpress - Woocommerce 购物车未清算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848723/

相关文章:

css - Wordpress body_class() 在博客页面上加载单个帖子 css

wordpress - Google Search Console 无法识别 WooCommerce 上的 'brand'

mysql - SQL 转换表 -> 将重复属性更改为列

php - 最低订单金额取决于 WooCommerce 上的邮政编码和运输方式

magento - 更新报价项目的权重

wordpress - Woocommerce REST API https - 无法连接

javascript - 如何重复div类?

php - 在 woocommerce 管理产品列表中为产品标签添加过滤器下拉列表

CSS |固定 div 内可变高度的购物车

php - 如果结帐页面中有特定变化,则隐藏付款方式 | Woocommerce