programing

"woocommerce_add_to_cart" 필터 또는 후크를 추가하는 방법

css3 2023. 3. 11. 09:20

"woocommerce_add_to_cart" 필터 또는 후크를 추가하는 방법

여기에 이미지 설명 입력

두 제품을 동시에 카트에 추가하고 싶습니다.하나는 오리지널(현재) 제품이고, 두 번째는 드롭다운 리스트에서 가져옵니다.

add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
$cnt=2
function custome_add_to_cart() {
    global $woocommerce;
      $cnt = $cnt + 1;
      echo $cnt."X";
      echo $p_id=$_POST['assessories'];
    $woocommerce->cart->add_to_cart($p_id, 1);

}

출력: - 아래 출력 이미지에서 볼 수 있듯이 카트에는 여러 번 같은 드롭다운 아이템이 추가되지만 카트에 추가할 수 있는 수량은 1개뿐입니다.add_to_function이 여러 번 실행되는 것 같습니다.카트 기능에 추가할 두 번째 드롭다운 제품을 매개 변수로 전달한 필터는 어떻게 추가해야 합니까? 이 제품도 카트에 추가할 수 있습니다.

여기에 이미지 설명 입력

이 조작은 유효합니다.

add_action('woocommerce_add_to_cart', 'custom_add_to_cart');
function custom_add_to_cart() {
    global $woocommerce;

    $product_id = $_POST['assessories'];
    
    $found = false;
    
    //check if product already in cart
    if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
        foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
            $_product = $values['data'];
            if ( $_product->id == $product_id )
                $found = true;
        }
        // if product not found, add it
        if ( ! $found )
            WC()->cart->add_to_cart( $product_id );
    } else {
        // if no products in cart, add it
        WC()->cart->add_to_cart( $product_id );
    }
}

출처: https://docs.woothemes.com/document/automatically-add-product-to-cart-on-visit/

woocommerce "add_to_cart" 함수는 "woocommerce_add_to_cart" 후크를 실행합니다.따라서 코드 "add_to_cart"가 실행되고 "woocommerce_add_to_cart"가 실행되고 "add_to_cart" 등이 실행됩니다.재귀 루프가 생성되었습니다.

다른 방법을 찾거나 전화를 끊어야 합니다.$woocommerce->cart->add_to_cart($p_id, 1);당신만의 코드로요

당신이 찾고 있는 것은 몇 가지 특성이 있는 가변 제품입니다!

어쨌든 정말 그렇게 하고 싶다면 remove_action 함수만 있으면 됩니다.

add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
function custome_add_to_cart() {
    $p_id=$_POST['assessories'];
    remove_action('woocommerce_add_to_cart', __FUNCTION__);
    WC()->cart->add_to_cart( $p_id );
}

이렇게 하면 작업이 무한정 루프되는 것을 방지하고 매우 간단합니다.그래서 그 제품에 대해 한 번만 추가될 것입니다.카트 수량에 추가된 값을 가져와 두 번째 매개 변수로 지정할 수 있습니다.WC()->cart->add_to_cart같은 양으로 기능하다

__FUNCTION__현재 기능의 이름을 문자열로 제공하는 매직 PHP 태그입니다.si 함수 이름이 동일하지 않은 경우에도 동작합니다.

오래된 것일 수 있지만 카트에 추가한 후 평가 매개 변수를 설정해 본 적이 있습니까? 그러면 루프가 끊어집니다.

function custome_add_to_cart() {
    global $woocommerce;
    if(isset($_POST['assessories'])){
        $cnt = $cnt + 1;
        echo $cnt . "X";
        echo $p_id = $_POST['assessories'];
        $woocommerce->cart->add_to_cart($p_id, 1);
        unset($_POST['assessories']);
    }
}

언급URL : https://stackoverflow.com/questions/28365050/how-to-add-filter-or-hook-for-woocommerce-add-to-cart