2016-11-21 58 views
2

一旦產品從商店列表視圖添加到您的購物車,我正嘗試用JavaScript做一些事情。目前'查看購物車'按鈕獲得一個類('添加'),並給它一個複選標記,但我想將文本更改爲'添加到購物車',並顯示另一個按鈕。WordPress的WooCommerce:目標成功添加到購物車動作

最接近的答案,我在網上找到的是:

$('body').on('added_to_cart',function(){ 
    // action here 
}); 

但是,只給你body元素一起工作。

下面我想要做什麼,但沒有檢查該項目是否被實際添加到您的成功車:

$('.add_to_cart_button').click(function(){ 
     $(this).text('Added to Cart'); 
     $(this).siblings('.view-cart').removeClass('hidden'); 
}); 

任何想法?

+0

我不確定是否有反正在javascript中檢查購物車內容,但是您可以向後端發起AJAX調用,如果對象實際上位於購物車中,則會返回true。它有點深入,但至少你肯定知道產品是否在購物車中。 – mcon

+0

感謝您的回覆。這可能是做這件事的理想方式,但我不確定如何。你有任何鏈接或參考? – bmac

回答

1

試試這個,讓我知道它是否有效。

以下是發送AJAX請求的jQuery代碼。如果ajax_object未定義,那麼您必須確保它已通過腳本進行本地化。最後我包含了一些筆記。該行動將確保WordPress掛鉤到正確的功能。您可能需要更改product_id的作業,我不確定產品在您的前端如何列出。您還應該添加處理AJAX錯誤的功能。

var product_id = $(this).attr('data-product_id'); 

$.ajax({ 
    type: "POST", 
    url: ajax_object.ajax_url, 
    data: {'action':'is_in_cart', 'product_id': product_id}, 
    success: function(result) { 
     if (result == true) 
      console.log('In the cart!'); 
     else 
      console.log('Not in the cart...'); 
    } 
}); 

這裏是PHP代碼。您必須將is_in_cart函數掛接到WordPress AJAX操作。然後,您可以循環瀏覽購物車的內容,查看您傳遞的產品ID是否在該處。第二次調用add_action允許未登錄的用戶也鉤入此函數。

function is_in_cart() { 
    $searchFor = $_POST['product_id']; 

    foreach(WC()->cart->get_cart() as $cart_item_key => $values) { 
     $_product = $values['data']; 

     if($searchFor == $_product->id) { 
      echo true; 
     } 
    } 
    echo false; 
} 

add_action('wp_ajax_is_in_cart', 'is_in_cart'); 
add_action('wp_ajax_nopriv_is_in_cart', 'is_in_cart'); 

如果您還沒有在JavaScript中提供AJAX url,那麼在本地化腳本時應該包括類似的內容。然後你就可以在JavaScript中引用ajax_object。只要確保將腳本句柄(ajax-script)更改爲您實例中的任何內容即可。

wp_localize_script(
    'ajax-script', 
    'ajax_object', 
    array(
     'ajax_url' => admin_url('admin-ajax.php') 
    ) 
); 
相關問題