ホームページ > バックエンド開発 > PHPチュートリアル > WooCommerce カート内の商品価格をプログラムで変更するにはどうすればよいですか?

WooCommerce カート内の商品価格をプログラムで変更するにはどうすればよいですか?

DDD
リリース: 2024-11-29 15:42:14
オリジナル
291 人が閲覧しました

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() を使用します。カートの入手方法items.
  • 各カート項目の価格を設定するには、WC_Product::set_price() メソッドを使用します。

追加情報:

  • add_custom_price() 関数は、WordPress の function.php ファイルに配置する必要があります。
  • WooCommerce 5.1.x 以降と互換性を持たせるには、add_custom_price() 関数のフック優先度を必要に応じて 1000 または 2000 に増やします。
  • プラグインやカスタマイズを使用している場合は、価格計算と競合する可能性があるため、フックの優先順位も上げてください。

以上がWooCommerce カート内の商品価格をプログラムで変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート