ホームページ >バックエンド開発 >PHPチュートリアル >WooCommerce 3 で製品とバリエーションの価格を動的に変更するにはどうすればよいですか?

WooCommerce 3 で製品とバリエーションの価格を動的に変更するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 01:56:13163ブラウズ

How Can I Dynamically Change Product and Variation Prices in WooCommerce 3 ?

WooCommerce 3 のフックを使用した商品価格の変更

WooCommerce プラグインは、フックを使用して商品価格を変更する便利な方法を提供します。これにより、さまざまな基準に基づいて動的な価格調整が可能になります。ただし、 WooCommerce 3 でバリエーション価格を変更しようとすると問題が発生します。

独自のアプローチと制限

バリエーションを含むすべての商品価格を変更するには、次のフックを使用できます。採用:

add_filter('woocommerce_get_price', array( $this, 'my_custom_price'), 99);
add_filter('woocommerce_get_regular_price', array( $this, 'my_custom_price'), 99);

残念ながら、これらのフックはバリエーションを効果的に処理できません。 products.

バリエーション商品のソリューション

WooCommerce 3 でバリエーション価格を正常に変更するには、次の PHP コードを利用します:

// Simple, grouped and external products
add_filter('woocommerce_product_get_price', array( $this, 'custom_price' ), 99, 2 );
add_filter('woocommerce_product_get_regular_price', array( $this, 'custom_price' ), 99, 2 );
// Variations 
add_filter('woocommerce_product_variation_get_regular_price', array( $this, 'custom_price' ), 99, 2 );
add_filter('woocommerce_product_variation_get_price', array( $this, 'custom_price' ), 99, 2 );

// Variable (price range)
add_filter('woocommerce_variation_prices_price', array( $this, 'custom_variable_price' ), 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', array( $this, 'custom_variable_price' ), 99, 3 );

キャッシュされた価格と WooCommerce 3

WooCommerce 3 では、バリエーションのキャッシュされた価格が導入されています。価格調整が行われたときにキャッシュされた価格を効率的に更新するには、次のフックを利用します。

add_filter( 'woocommerce_get_variation_prices_hash', array( $this, 'add_price_multiplier_to_variation_prices_hash' ), 99, 3 );

価格フィルタリング ウィジェット フック

ウィジェットを使用して商品価格をフィルタリングするには、次のフックを利用します。次のフック:

woocommerce_price_filter_widget_min_amount
woocommerce_price_filter_widget_max_amount

以上がWooCommerce 3 で製品とバリエーションの価格を動的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。