>백엔드 개발 >PHP 튜토리얼 >WooCommerce 카트에서 제품 가격을 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

WooCommerce 카트에서 제품 가격을 프로그래밍 방식으로 변경하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-29 15:42:14289검색

How to Programmatically Change Product Prices in a WooCommerce Cart?

WooCommerce 3 장바구니의 제품 가격 변경

카트의 제품 가격을 수정하려면 다음을 사용할 수 있습니다. 코드:

// Set custom cart item price
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1000, 1);

// Handle mini cart custom item price (Optional)
if ( ! is_admin() || defined( 'DOING_AJAX' ) ) :
    add_filter( 'woocommerce_cart_item_price', 'filter_cart_item_price', 10, 3 );
endif;

// Respective Functions
function add_custom_price( $cart ) {
   // Required for WC 3.0+
   if ( is_admin() && ! defined( 'DOING_AJAX' ) )
       return;

   // Avoid hook repetition
   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 );
   }
}

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;
}

참고:

  • wooCommerce_before_shipping_calculator 대신 woocommerce_before_calculate_totals 후크를 사용하세요.
  • WC_Cart::get_cart()를 사용하세요. 카트를 얻는 방법 항목.
  • WC_Product::set_price() 메소드를 사용하여 각 장바구니 항목의 가격을 설정합니다.

추가 정보:

  • add_custom_price() 함수는 WordPress의 function.php 파일에 있어야 합니다. 테마.
  • WooCommerce 5.1.x 이상과 호환되도록 하려면 add_custom_price() 함수의 후크 우선순위를 1000 또는 필요한 경우 2000까지 높이세요.
  • 다음과 같은 플러그인이나 사용자 정의를 사용하는 경우 가격 계산과 충돌할 수 있으므로 Hook 우선순위도 높여주세요.

위 내용은 WooCommerce 카트에서 제품 가격을 프로그래밍 방식으로 변경하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.