概要
woocommerce_variation_prices_price
フィルタは、WooCommerceにおける商品のバリエーション価格を変更するために使用されるフックです。このフィルタを使用することで、ショップオーナーや開発者は商品の価格を動的に変更したり、特定の条件に基づいて異なる価格を表示したりすることができます。主な使用例としては以下のようなケースが考えられます:
- 特定の条件に基づく価格の割引や増加
- カスタムフィールドから価格を取得する場合
- 会員ランクによる価格設定
- セール情報に基づく価格調整
- 地域に基づいた税金の追加
- ショップのプロモーションに基づく価格の変更
構文
add_filter('woocommerce_variation_prices_price', 'your_function_name', 10, 2);
パラメータ
$price
(float) – 取得したバリアーションの価格$product
(WC_Product_Variable) – 対象の変数商品オブジェクト
戻り値
(float)変化後の価格
バージョン情報
- WooCommerceのバージョン: 2.0+
- WordPressのバージョン: 4.0+
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル 1: 特定条件による割引
add_filter('woocommerce_variation_prices_price', 'apply_discount_based_on_stock', 10, 2);
function apply_discount_based_on_stock($price, $product) {
if ($product->get_stock_quantity() < 5) {
$price *= 0.9; // 在庫が5未満のときに10%割引
}
return $price;
}
このコードは、在庫が5未満のバリエーションに対して10%の割引を適用します。
サンプル 2: カスタムフィールドから価格を取得
add_filter('woocommerce_variation_prices_price', 'custom_price_from_custom_field', 10, 2);
function custom_price_from_custom_field($price, $product) {
$custom_price = get_post_meta($product->get_id(), '_custom_price', true);
if (!empty($custom_price)) {
return $custom_price; // カスタムフィールドの価格を使用
}
return $price;
}
このサンプルは、カスタムフィールドから取得した価格を使用して、通常価格を上書きします。
サンプル 3: 会員ランクによる価格設定
add_filter('woocommerce_variation_prices_price', 'set_price_based_on_membership', 10, 2);
function set_price_based_on_membership($price, $product) {
if (is_user_logged_in()) {
$user = wp_get_current_user();
if (in_array('premium_member', (array)$user->roles)) {
$price *= 0.85; // プレミアム会員には15%割引
}
}
return $price;
}
このコードは、プレミアム会員のユーザーに対して15%の割引を適用します。
サンプル 4: セール情報に基づく価格調整
add_filter('woocommerce_variation_prices_price', 'adjust_price_for_sale', 10, 2);
function adjust_price_for_sale($price, $product) {
if ($product->is_on_sale()) {
$price *= 0.8; // セール中の場合、20%オフ
}
return $price;
}
この例は、商品がセール中の場合に20%の割引を適用します。
サンプル 5: 地域に基づく税金の追加
add_filter('woocommerce_variation_prices_price', 'add_tax_based_on_location', 10, 2);
function add_tax_based_on_location($price, $product) {
if (WC()->customer->get_shipping_country() === 'JP') {
$tax_rate = 1.1; // 日本の場合、10%税金を追加
return $price * $tax_rate;
}
return $price;
}
このコードは、日本の顧客に対して10%の税金を追加します。