2017-10-21 93 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

曾在某些場合工作過。 –

相關問題