概要
woocommerce_coupon_validate_maximum_amount
アクションは、WooCommerce のクーポンが適用される際に、最大金額制限を検証する機能を提供します。このフックを使用することにより、特定の条件に基づいてクーポンの制限を柔軟に管理できるため、通常次のような機能を実装する際によく使用されます。
- クーポンの適用金額を制限する
- 特定の商品に対して異なる最大金額を設定する
- 購入金額が一定を超えた場合にのみクーポンを適用する
- 特定のユーザーグループにおけるクーポンの最大適用金額を制限する
- 一部の配送地域で異なる最大金額を設定する
- キャンペーン期間に対するクーポンの適用条件をカスタマイズする
このアクションは 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