Woocommerce 3에서 카트 품목 가격 변경
아래 기능을 사용하여 카트의 상품 가격을 변경하려고 합니다.
add_action( 'woocommerce_before_shipping_calculator', 'add_custom_price'
);
function add_custom_price( $cart_object ) {
foreach ( $cart_object->cart_contents as $key => $value ) {
$value['data']->price = 400;
}
}
WooCommerce 버전 2.6.x에서는 정상적으로 동작하고 있었지만 버전 3.0 이상에서는 동작하지 않습니다.
WooCommerce 버전 3.0+에서 작동하려면 어떻게 해야 합니까?
감사해요.
업데이트 2021 (미니카트 커스텀 아이템 가격 취급)
WooCommerce 버전 3.0+에서는 다음이 필요합니다.
- 대신 후크를 사용합니다.
- 대신 WC_Cart 방법을 사용하려면
- 대신 WC_product method를 사용하는 방법
코드는 다음과 같습니다.
// Set custom cart item price
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1000, 1);
function add_custom_price( $cart ) {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Avoiding hook repetition (when using price calculations for example | optional)
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop through cart items
foreach ( $cart->get_cart() as $cart_item ) {
$cart_item['data']->set_price( 40 );
}
}
미니 카트(업데이트):
// Mini cart: Display custom price
add_filter( 'woocommerce_cart_item_price', 'filter_cart_item_price', 10, 3 );
function filter_cart_item_price( $price_html, $cart_item, $cart_item_key ) {
if( isset( $cart_item['custom_price'] ) ) {
$args = array( 'price' => 40 );
if ( WC()->cart->display_prices_including_tax() ) {
$product_price = wc_get_price_including_tax( $cart_item['data'], $args );
} else {
$product_price = wc_get_price_excluding_tax( $cart_item['data'], $args );
}
return wc_price( $product_price );
}
return $price_html;
}
코드는 기능합니다.php 파일에는 액티브한 아이 테마(또는 활성 테마).
이 코드는 테스트되어 동작합니다(WooCommerce 5.1.x에서도 동작합니다).
주의: 몇 가지 특정 플러그인 또는 기타 커스터마이즈를 사용할 경우 후크 우선순위를 에서 (또는 )로 높일 수 있습니다.
관련:
- Woocommerce 3의 숨겨진 입력 필드 커스텀 가격에서 카트 아이템 가격 설정
- Woocommerce에서 사용자 지정 카트 항목 데이터를 기반으로 카트 항목 가격 변경
- Woocommerce 단일 제품 페이지 및 카트에서 특정 제품 가격을 조건부로 설정
- Woocommerce 단순 제품에서 가격을 변경할 선택 필드를 추가합니다.
WooCommerce 버전 3.2.6에서는 priority를 1000으로 높이면 @Loic TheAztec의 답변이 유효합니다.
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1000, 1);
priority 값을 시험했습니다.10
,99
그리고.999
하지만 제 카트의 가격과 합계는 변경되지 않았습니다.get_price()
그거set_price()
실제로 물건의 가격을 정했습니다.
카트에 요금을 추가하는 커스텀 훅을 가지고 있으며, 제품 속성을 추가하는 서드파티 플러그인을 사용하고 있습니다.이러한 WooCommerce의 "add-ons"에 의해 지연이 발생하여 커스텀 액션을 연기해야 하는 것으로 생각됩니다.
언급URL : https://stackoverflow.com/questions/43324605/change-cart-item-prices-in-woocommerce-3
'programing' 카테고리의 다른 글
Angular 형식의 동적 유효성 검사 및 이름JS (0) | 2023.03.09 |
---|---|
Azure Cli 구독 기본값을 변경하는 방법 (0) | 2023.03.09 |
잘못된 요청 - 호스트와 포트의 이 조합에는 TLS가 필요합니다.스프링 부트 포함 (0) | 2023.03.09 |
Wordpress 사용자 지정 필드에 대한 최종 구성원 편집 검색 필터 (0) | 2023.03.09 |
를 도입하기 위해 필요한 최소 셋업은 무엇입니까?Oracle 클라이언트 11을 사용하는 NET 애플리케이션 (0) | 2023.03.09 |