WooCommerce에서 카트에 추가하기 전에 카트를 비웁니다.
저는 WP Job manager를 Woo Subscriptions와 함께 사용하고 있습니다.
지금:
- 처음에 패키지(Woo Subscription)를 선택했습니다.
- 그리고 모든 세부사항을 추가했다.
- 하지만 제출하지 않았다.
- 사이트에 돌아왔기 때문에 다시 구입하려면 패키지를 선택해야 합니다.그래서 패키지를 선택하고 세부사항을 기입한 후 결제 패키지로 이동했습니다.
- 현재 카트에는 패키지가 모두 있습니다(처음 구매하지 않고 선택한 패키지와 최근 선택한 패키지).
- 가장 최근에 선택한 것이 카트에 있고 가장 먼저 선택한 것이 가장 최근에 선택한 것이 바로 삭제되도록 이 문제를 수정하려면 어떻게 해야 합니까?
Woocommerce 모든 제품을 카트에서 삭제하고 현재 제품을 카트에 추가하려고 시도했지만 도움이 되지 않았습니다.
업데이트됨 (2가지 다른 방법으로):
다음 작업을 수행해야 합니다.
add_filter( 'woocommerce_add_to_cart_validation', 'remove_cart_item_before_add_to_cart', 20, 3 );
function remove_cart_item_before_add_to_cart( $passed, $product_id, $quantity ) {
if( ! WC()->cart->is_empty() )
WC()->cart->empty_cart();
return $passed;
}
코드는 기능합니다.php 파일(또는 테마의 액티브한 아이 테마).AJAX 애드 투 카트 및 일반 애드 투 카트 모두 테스트 및 작동 가능...
또는 마지막으로 추가한 항목을 카트에 보관하는 다음과 같은 다른 항목을 사용할 수 있습니다.
// Keep only last cart item
add_action( 'woocommerce_before_calculate_totals', 'keep_only_last_cart_item', 30, 1 );
function keep_only_last_cart_item( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
$cart_items = $cart->get_cart();
if( count( $cart_items ) > 1 ){
$cart_item_keys = array_keys( $cart_items );
$cart->remove_cart_item( reset($cart_item_keys) );
}
}
코드가 기능합니다.php 파일(또는 테마의 액티브한 아이 테마).테스트 완료 및 동작
사이트 데이터베이스로 이동하여 테이블 'wp_woocommerce_sessions'를 찾아 'session_id' 열에 0 값이 포함되어 있는지 확인합니다.
- 이 0개의 엔트리 레코드를 모두 삭제합니다.
- 'session_id' 열을 프라이머리로 만듭니다.
- make 'session_id' 컬럼이 자동으로 증가합니다.
언급URL : https://stackoverflow.com/questions/49382193/empty-cart-before-add-to-cart-in-woocommerce
'programing' 카테고리의 다른 글
유지 방법: 버튼 클릭 후 액티브한 css 스타일 (0) | 2023.03.10 |
---|---|
JSONDecodeError: 예상, 딜리미터를 제공하는 유효한 JSON (0) | 2023.03.10 |
컨테이너 내에서 Wordpress를 업데이트하는 중입니다.FTP 액세스 없음 (0) | 2023.03.10 |
잭슨과의 JSON 필드 복제 (0) | 2023.03.10 |
스프링 부트를 사용하여 스프링 배치에서 작업 매개 변수를 설정하는 방법 (0) | 2023.03.10 |