プラグインWooCommerceのwoocommerce_get_discounted_priceフィルタの使用方法・解説

概要

woocommerce_get_discounted_priceフィルタは、WooCommerceで商品価格の割引を計算する際に使用されます。このフィルタを利用すると、製品の割引価格を変更したり、カスタマイズしたりすることができます。主に以下の機能を実装する際に使用されます。

  1. 割引価格の計算をカスタマイズする
  2. 特定の条件に基づいて割引を適用する
  3. 割引のデフォルト値を変更する
  4. カート内の商品による割引ロジックを追加する
  5. 顧客のユーザーロールに応じた割引を適用する
  6. プロモーションやクーポンの適用に基づく割引を実装する

フィルタの構文

add_filter('woocommerce_get_discounted_price', 'custom_discounted_price_function', 10, 2);

パラメータ

  • $price (float): 変更前の割引価格
  • $product (WC_Product): 割引が適用される商品オブジェクト

戻り値

  • (float): カスタマイズされた割引価格

使用可能なプラグインWooCommerceのバージョン

  • WooCommerce 2.6.0以降

WordPressのバージョン

  • 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_get_discounted_price', 'custom_discounted_price', 10, 2);

function custom_discounted_price($price, $product) {
    if ($product->is_on_sale() && $product->get_regular_price() > 50) {
        $price *= 0.9; // 定価が50を超える場合、価格を10%割引
    }
    return $price;
}

このサンプルでは、製品がセール中であり、その定価が50を超える場合に、割引価格を10%減少させています。

サンプルコード2: ユーザーグループに基づく割引提供

add_filter('woocommerce_get_discounted_price', 'user_group_discount', 10, 2);

function user_group_discount($price, $product) {
    if (current_user_can('premium_member')) {
        $price -= 5; // プレミアム会員には5ドルの割引を適用
    }
    return $price;
}

このコードでは、プレミアム会員のユーザーに対して、割引価格から5ドルを引いています。

サンプルコード3: 特定の製品に対する割引率を適用

add_filter('woocommerce_get_discounted_price', 'specific_product_discount', 10, 2);

function specific_product_discount($price, $product) {
    if ($product->get_id() == 123) {
        return $price * 0.85; // 製品ID 123には15%割引を適用
    }
    return $price;
}

この例では、特定の製品(ID: 123)に対して15%の割引を適用しています。

サンプルコード4: カート内の数量に基づく割引

add_filter('woocommerce_get_discounted_price', 'quantity_based_discount', 10, 2);

function quantity_based_discount($price, $product) {
    $cart = WC()->cart;
    if ($cart->get_cart_contents_count() > 5) {
        return $price * 0.9; // カート内に5つ以上の商品がある場合、10%の割引
    }
    return $price;
}

このサンプルでは、カート内の商品数が5つを超える場合に10%の割引を適用しています。

サンプルコード5: クーポンによる追加割引

add_filter('woocommerce_get_discounted_price', 'coupon_discount', 10, 2);

function coupon_discount($price, $product) {
    if (WC()->cart->has_discount('SUMMER2023')) {
        return $price * 0.8; // SUMMER2023クーポン使用時に20%の割引
    }
    return $price;
}

このコード例では、特定のクーポン(SUMMER2023)が適用されている場合に、割引価格を20%減少させています。

これらのサンプルコードを使うことで、様々な条件に基づいた割引のカスタマイズが可能になります。詳細な仕様については、WooCommerceの公式ドキュメントやフォーラムを参照してください。

この関数について質問する


上の計算式の答えを入力してください