プラグインWooCommerceのwoocommerce_coupon_validate_maximum_amountアクションの使用方法・解説

概要

woocommerce_coupon_validate_maximum_amount アクションは、WooCommerce のクーポンが適用される際に、最大金額制限を検証する機能を提供します。このフックを使用することにより、特定の条件に基づいてクーポンの制限を柔軟に管理できるため、通常次のような機能を実装する際によく使用されます。

  1. クーポンの適用金額を制限する
  2. 特定の商品に対して異なる最大金額を設定する
  3. 購入金額が一定を超えた場合にのみクーポンを適用する
  4. 特定のユーザーグループにおけるクーポンの最大適用金額を制限する
  5. 一部の配送地域で異なる最大金額を設定する
  6. キャンペーン期間に対するクーポンの適用条件をカスタマイズする

このアクションは WooCommerce バージョン 2.4.0 以降で利用可能で、WordPress のバージョンは 4.0 以降をサポートしています。

構文

do_action( 'woocommerce_coupon_validate_maximum_amount', $coupon, $order );

パラメータ

  • $coupon: チェック対象のクーポンのオブジェクト。
  • $order: クーポンが適用されるオーダーのオブジェクト。

戻り値

このアクション自体は戻り値を提供しませんが、登録されたコールバック関数での処理により、クーポンの適用に影響を与えることができます。

この関数のアクションでの使用可能性

アクション名 使用例
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: 最大金額の制限を追加

このコードは、クーポンの適用時に最大金額を200ドルに制限します。

add_action( 'woocommerce_coupon_validate_maximum_amount', 'custom_validate_maximum_amount', 10, 2 );

function custom_validate_maximum_amount( $coupon, $order ) {
    $maximum_amount = 200;
    if ( $order->get_total() > $maximum_amount ) {
        WC()->add_notice( __('このクーポンは200ドルを超える注文には適用できません。'), 'error' );
    }
}

引用元: https://woocommerce.com

サンプルコード2: 特定のクーポンに制限を設定

このコードは、特定のクーポン「SUMMER22」に対して最大金額制限を設けるものです。

add_action( 'woocommerce_coupon_validate_maximum_amount', 'specific_coupon_maximum_amount', 10, 2 );

function specific_coupon_maximum_amount( $coupon, $order ) {
    if ( $coupon->get_code() === 'SUMMER22' && $order->get_total() > 100 ) {
        WC()->add_notice( __('SUMMER22は100ドル以下の注文にのみ適用できます。'), 'error' );
    }
}

引用元: https://woocommerce.com

サンプルコード3: ユーザーグループに基づく制限

この例では、特定のユーザーグループに対して異なる最大金額を設定します。

add_action( 'woocommerce_coupon_validate_maximum_amount', 'user_role_based_maximum', 10, 2 );

function user_role_based_maximum( $coupon, $order ) {
    $user = wp_get_current_user();
    $maximum_amount = ( in_array( 'wholesale_customer', (array) $user->roles ) ) ? 500 : 300 );

    if ( $order->get_total() > $maximum_amount ) {
        WC()->add_notice( sprintf( __('このクーポンは%.2fドルを超える注文には適用できません。'), $maximum_amount ), 'error' );
    }
}

引用元: https://woocommerce.com

サンプルコード4: 地域による制限

特定の配送地域に対して最大金額制限を適用するサンプルです。

add_action( 'woocommerce_coupon_validate_maximum_amount', 'region_based_coupon_limit', 10, 2 );

function region_based_coupon_limit( $coupon, $order ) {
    $shipping_country = $order->get_shipping_country();
    $maximum_amount = ( $shipping_country === 'US' ) ? 150 : 250;

    if ( $order->get_total() > $maximum_amount ) {
        WC()->add_notice( sprintf( __('このクーポンは配送料が%sの場合、%.2fドルを超える注文には適用できません。'), $shipping_country, $maximum_amount ), 'error' );
    }
}

引用元: https://woocommerce.com

サンプルコード5: キャンペーン期間による制限

クーポンの適用条件をキャンペーン期間によって調整するコードです。

add_action( 'woocommerce_coupon_validate_maximum_amount', 'campaign_based_coupon_limit', 10, 2 );

function campaign_based_coupon_limit( $coupon, $order ) {
    $current_date = current_time( 'Y-m-d' );
    $start_date = '2023-01-01';
    $end_date = '2023-12-31';

    if ( $current_date >= $start_date && $current_date <= $end_date ) {
        $maximum_amount = 200;
    } else {
        $maximum_amount = 100;
    }

    if ( $order->get_total() > $maximum_amount ) {
        WC()->add_notice( sprintf( __('このクーポンは%.2fドルを超える注文には適用できません。'), $maximum_amount ), 'error' );
    }
}

引用元: https://woocommerce.com

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


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