代码之家  ›  专栏  ›  技术社区  ›  raju_eww

Woomerce购物车未清算

  •  0
  • raju_eww  · 技术社区  · 6 年前

    我知道会有这样的问题,但我已经尝试了几乎所有的选择没有运气,所以我在这里问。

    我有意见 cart 在Woomerce中,订单完成后并不是空的,还有一些用户只是将商品添加到购物车中,然后不去结账,几天后回来,他们仍然看到旧购物车。

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

    我想在结帐后清除购物车数据,或者如果用户将项目添加到购物车而不结帐,过一段时间再次回来购物,则购物车必须为空,并且不应将旧会话存储到购物车。

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

    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 
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Ajay Ghaghretiya    6 年前

    我在许多Woomcommerce网站上也遇到过这个问题。如果Woomcommerce在下单后没有清空购物车,那么您也可以通过自己的方式完成。

    在活动主题的functions.php文件中添加以下代码。下单后应为清仓车。

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

    我希望这对你有用。

    谢谢