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

概要

woocommerce_coupon_custom_discounts_arrayは、WooCommerceのクーポンの割引金額をカスタマイズするために使用されるフィルタです。このフックを使用すると、クーポンの適用に関するロジックを拡張し、特定の条件に基づいて、割引の配列を変更することができます。

このフックがよく使用される機能:
  1. 特定の顧客グループに対して割引を適用する。
  2. 条件付きで異なる割引タイプを適用する。
  3. クーポンの使用状況に応じて、割引をリアルタイムで調整する。
  4. ロジックに基づいて複数の割引を組み合わせる。
  5. 商品のカテゴリごとに異なる割引を適用する。
  6. ユーザーの購入履歴に基づいた割引を提供する。

構文

add_filter('woocommerce_coupon_custom_discounts_array', 'custom_discount_logic', 10, 2);

パラメータ

  • $discounts: 既存の割引金額の配列。
  • $coupon: 現在適用中のクーポンオブジェクト。

戻り値

  • 修正された割引金額の配列。

対応するWooCommerceのバージョン

  • WooCommerce 2.6 以降

対応する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_coupon_custom_discounts_array', 'add_fixed_discount', 10, 2);

function add_fixed_discount($discounts, $coupon) {
    if ($coupon->get_code() === 'SPECIAL10') {
        $discounts[] = array(
            'amount' => 10,
            'type'   => 'fixed_cart'
        );
    }
    return $discounts;
}

引用元: https://docs.woocommerce.com/document/

サンプル2: ユーザーの購入履歴に基づく割引

このコードは、特定のユーザーが過去に購入した商品のカテゴリに基づいて追加の割引を与えます。

add_filter('woocommerce_coupon_custom_discounts_array', 'custom_discount_based_on_purchases', 10, 2);

function custom_discount_based_on_purchases($discounts, $coupon) {
    $user_id = get_current_user_id();
    $purchased_products = wc_get_orders(array('customer_id' => $user_id));

    // 過去の購入に基づいて割引を適用
    if (count($purchased_products) > 5) {
        $discounts[] = array(
            'amount' => 5,
            'type'   => 'fixed_cart'
        );
    }
    return $discounts;
}

引用元: https://woocommerce.com/document/

サンプル3: 商品カテゴリに基づく割引

このサンプルは、特定のカテゴリの商品にのみ割引を適用する方法を示しています。

add_filter('woocommerce_coupon_custom_discounts_array', 'category_based_discount', 10, 2);

function category_based_discount($discounts, $coupon) {
    $products = WC()->cart->get_cart();

    foreach ($products as $cart_item) {
        $product_id = $cart_item['product_id'];
        if (has_term('special-category', 'product_cat', $product_id)) {
            $discounts[] = array(
                'amount' => 15,
                'type'   => 'percentage'
            );
            break;
        }
    }
    return $discounts;
}

引用元: https://docs.woocommerce.com/document/

サンプル4: 特定のユーザーグループに割引を適用

このコードでは、特定のロールを持つユーザーに追加の割引を提供します。

add_filter('woocommerce_coupon_custom_discounts_array', 'role_based_discount', 10, 2);

function role_based_discount($discounts, $coupon) {
    if (current_user_can('premium_member')) {
        $discounts[] = array(
            'amount' => 20,
            'type'   => 'fixed_cart'
        );
    }
    return $discounts;
}

引用元: https://woocommerce.com/document/

サンプル5: 異なるタイプの割引の組み合わせ

このコードは、固定割引とパーセント割引の両方を組み合わせて適用するサンプルです。

add_filter('woocommerce_coupon_custom_discounts_array', 'combined_discount_types', 10, 2);

function combined_discount_types($discounts, $coupon) {
    $discounts[] = array(
        'amount' => 10,
        'type'   => 'fixed_cart'
    );
    $discounts[] = array(
        'amount' => 5,
        'type'   => 'percentage'
    );

    return $discounts;
}

引用元: https://woocommerce.com/document/

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


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