提问者:小点点

尝试从WooCommerce结账中删除购物车项目时出错


在结帐页面上,我有一个按钮来选择发货方式。当我的购物车包含属于某个类别的产品时,我希望从购物车中删除属于同一类别的所有产品。

<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后,第一个产品被删除。你有什么建议吗?谢谢


共1个答案

匿名用户

您的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 }

再试一次,告诉我是否有效。我现在不能测试它。