2017-10-21 29 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にこの部分を追加しました:私はホームページのheadセクションにこの部分を追加したユーザーがログインしていない場合は

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

何度か働いた。 –

関連する問題