"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
'programing' 카테고리의 다른 글
ES6 맵을 로컬 스토리지(또는 다른 곳)에 보관하려면 어떻게 해야 합니까? (0) | 2023.03.11 |
---|---|
Wordpress에서 이미지를 비공개로 설정 (0) | 2023.03.11 |
REST API - "Accept: application/json" HTTP 헤더 사용 (0) | 2023.03.11 |
Wordpress는 데이터베이스 내의 카테고리에 게시물을 어떻게 링크합니까? (0) | 2023.03.11 |
Redux로 대응하시겠습니까?'문맥' 문제는 어떻습니까? (0) | 2023.03.11 |