試試這個,讓我知道它是否有效。
以下是發送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')
)
);
我不確定是否有反正在javascript中檢查購物車內容,但是您可以向後端發起AJAX調用,如果對象實際上位於購物車中,則會返回true。它有點深入,但至少你肯定知道產品是否在購物車中。 – mcon
感謝您的回覆。這可能是做這件事的理想方式,但我不確定如何。你有任何鏈接或參考? – bmac