在结帐页面上,我有一个按钮来选择发货方式。当我的购物车包含属于某个类别的产品时,我希望从购物车中删除属于同一类别的所有产品。
<button onclick="clear_product_cart()">Check possibility</button>
我的剧本:
function clear_product_cart(){
jQuery.post(
ajaxurl,
{
'action': 'clear_cart'
},
function(response){
alert( ' product removed!');
});
}
在我的职责范围内。php
add_action( 'wp_ajax_clear_cart', 'clear_cart' );
add_action( 'wp_ajax_nopriv_clear_cart', 'clear_cart' );
function clear_cart(){
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( !has_term( 'my_cat', 'product_cat', $cart_item['product_id'] ) ) {
WC()->cart->remove_cart_item( $cart_item_key );
}
}
die();
}
我不知道为什么,但我有一个错误500后,第一个产品被删除。你有什么建议吗?谢谢
您的JavaScript
函数可能就是问题所在。请删除它并将其放入函数中。php
子主题的文件:
add_action( 'wp_head', 'head_data' );
function head_data() { ?>
<script>
function clear_product_cart() {
let a = {action: "clear_cart"};
jQuery.post("<?php echo admin_url( 'admin-ajax.php' ); ?>", a, function () {
}).success(function () {
alert('Product removed!');
}).fail(function () {
alert('Error!');
});
}
</script>
<?php }
再试一次,告诉我是否有效。我现在不能测试它。