2017-10-21 98 views
3

我正试图在主页上清除购物车。我已经添加了这部分的主页头部分:Woocommerce - 在主页上清除购物车(登录后无法使用)

<script type='text/javascript'>  
    function clearCart() { 
      jQuery.post(
       "https://abcdefgh.com/wp-admin/admin-ajax.php", 
       //ajaxurl, 
       { 
        "action": "clearcart" 
       } 

      ); 
    console.log('its homepage bro!'); 
} 
    jQuery(document).ready(function(){ 
    clearCart(); 
    }); 
    </script> 

而且,加入这部分的functions.php:

add_action('wp_ajax_nopriv_clearcart',function(){ 
    global $woocommerce; 
    $woocommerce->cart->empty_cart(true); 
    }); 

如果用户没有登录,购物车被在清主页。但是,如果用户登录,尽管javascript部分已执行(我通过控制台日志进行检查),但它不起作用。

为什么你认为它发生了,我该如何解决它?

+0

这是一个疯狂的尝试这种方式。而不是要求解释,告诉我们你想做什么。 –

+0

“我试图在主页上清除购物车。”我已经告诉你,你可以看到。 –

回答

3

您不需要为此使用Ajax。我只是用可选位的jQuery刷新/更新相关的购物车的数据(如在微型车):

add_action('wp_footer', 'clear_the_cart_in_home_refresh'); 
function clear_the_cart_in_home_refresh(){ 
    // Just in home page when cart is not empty 
    if(WC()->cart->is_empty()) return; 
    if(! is_front_page()) return; 

    // Empty cart 
    WC()->cart->empty_cart(true); 
    WC()->session->set('cart', array()); 

    // Reset minicart count and update page content (if needed) 
    ?> 
    <script type='text/javascript'> 
     jQuery(document).ready(function($){ 
      setTimeout(function() { 
       $('body').trigger('wc_fragment_refresh'); 
       $('body').trigger('updated_wc_div'); 
      }, 100); 
     }); 
    </script> 
    <?php 
} 

代码放在您的活动子主题(或主题)的function.php文件或也在任何插件文件中。

经过测试和工作。

+0

曾在某些场合工作过。 –

相关问题