programing

Woocommerce | 아약스의 클리어 카트

lovejava 2023. 6. 28. 21:14

Woocommerce | 아약스의 클리어 카트

카트를 지우기 위해 AJAX 기능을 설정하려고 합니다.

HTML

<a onclick="clearCart(this)" data-href="/product-page/" data-productID="182">Go to Product</a>

자바스크립트

function clearCart(d) {
    jQuery(document).ready(function($) {
        var productID = d.getAttribute("data-productID");
        $.ajax({
            url: "addtocart.php",
            data: {productID: productID},
            type: "post",
            success: function(output) {
                window.location = d.getAttribute("data-href");
                //alert(output);
            }
        });
    });
}

PHP

if(isset($_POST['productID']) && !empty($_POST['productID'])) {   
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    //echo $_POST['productID'];
}

결과

  • 세 번째 PHP 행으로 인해 발생한 내부 서버 오류
  • 경고 var 출력이 작동 중입니다(주석 코드 확인).

솔루션

저는 그것을 혼자서 알아냈고 @Mirza의 큰 도움을 받았습니다.p

제이에스

      function clearCart(d) {
            jQuery.post(
                "https://dercampus.ch/wp-admin/admin-ajax.php", 
                //ajaxurl, 
                {
                    "action": "clearcart",
                    "data":   d.getAttribute("data-productid")
                }, 
                function(){
                    window.location = d.getAttribute("data-href");
                }
            );
        }

PHP

add_action('wp_ajax_nopriv_clearcart',function(){
    global $woocommerce;
    $woocommerce->cart->empty_cart();
});

php 코드를 다음으로 변경하십시오.

if(isset($_POST['data']) && !empty($_POST['data'])) {   
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    //echo $_POST['productID'];
}

전달된 매개 변수는 제품이 아닌 데이터입니다.아이디

// before addto cart, only allow 1 item in a cart
add_filter( 'woocommerce_add_to_cart_validation', 'woo_custom_add_to_cart_before' );
 
function woo_custom_add_to_cart_before( $cart_item_data ) {
 
    global $woocommerce;
    $woocommerce->cart->empty_cart();
 
    // Do nothing with the data and return
    return true;
}

언급URL : https://stackoverflow.com/questions/40174894/woocommerce-clear-cart-by-ajax