概要
woocommerce_coupon_validate_user_usage_limit
は、WooCommerceでクーポンの使用回数を制限する際に使用されるアクションフックです。このフックは、特定のユーザーによるクーポンの使用状況を検証するために使用されます。以下のような機能を実装する際によく使用されます。
- ユーザーごとのクーポン使用回数の制限
- 特定のユーザーグループに対するクーポンの適用制限
- 独自のロジックに基づいてクーポンの有効性を条件付け
- クーポンの使用回数が上限に達した際のカスタムエラーメッセージの表示
- ユーザーの購入履歴に基づいたクーポンの適用可否
- クーポンの使用状況をログに記録する機能
構文
add_action( 'woocommerce_coupon_validate_user_usage_limit', 'custom_function_name', 10, 3 );
パラメータ
$valid
(bool): クーポンが有効であるかどうか$coupon
(WC_Coupon): 現在検証中のクーポン$user_id
(int): クーポンを使用しようとしているユーザーのID
戻り値
特に戻り値はありませんが、第1引数の$validを変更することで、クーポンの有効性を動的に変更できます。
WooCommerceのバージョン
このアクションは、WooCommerce 2.3以降で使用可能です。
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_action( 'woocommerce_coupon_validate_user_usage_limit', 'check_coupon_usage_limit', 10, 3 );
function check_coupon_usage_limit( $valid, $coupon, $user_id ) {
$usage_limit = $coupon->get_usage_limit();
if ( $usage_limit && $coupon->get_usage_count() >= $usage_limit ) {
$valid = false;
// ユーザーにエラーメッセージを表示
wc_add_notice( __( 'このクーポンは使用回数の上限に達しました。', 'text-domain' ), 'error' );
}
return $valid;
}
説明: クーポンの使用回数が設定された上限に達している場合に、エラーメッセージを表示します。
サンプルコード2
add_action( 'woocommerce_coupon_validate_user_usage_limit', 'restrict_coupon_to_logged_in_users', 10, 3 );
function restrict_coupon_to_logged_in_users( $valid, $coupon, $user_id ) {
if ( ! is_user_logged_in() ) {
return false; // ログインしていない場合はクーポン無効
}
return $valid; // その他の場合は有効
}
説明: ログインしていないユーザーに対してクーポンを無効にします。
サンプルコード3
add_action( 'woocommerce_coupon_validate_user_usage_limit', 'limit_coupon_to_specific_role', 10, 3 );
function limit_coupon_to_specific_role( $valid, $coupon, $user_id ) {
if ( ! user_can( $user_id, 'wholesale_customer' ) ) {
return false; // "wholesale_customer" 役割以外は無効
}
return $valid; // 権限があれば有効
}
説明: 特定のユーザー役割(例:卸売顧客)のみがクーポンを使用できるように制限します。
サンプルコード4
add_action( 'woocommerce_coupon_validate_user_usage_limit', 'custom_usage_limit_check', 10, 3 );
function custom_usage_limit_check( $valid, $coupon, $user_id ) {
if ( $coupon->get_code() === 'SPECIAL' && $user_id !== 1 ) {
return false; // 特定クーポンはユーザーID 1 のみ有効
}
return $valid; // その他の場合は有効
}
説明: SPECIAL
というコードのクーポンは、特定のユーザーID(IDが1)のみ使用できるように制限します。
サンプルコード5
add_action( 'woocommerce_coupon_validate_user_usage_limit', 'log_coupon_usage', 10, 3 );
function log_coupon_usage( $valid, $coupon, $user_id ) {
error_log( "ユーザーID {$user_id} がクーポン {$coupon->get_code()} を検証しました。" );
return $valid; // 検証後も有効
}
説明: クーポンの検証状況をログに記録します。これにより、クーポンの利用状況を確認することができます。
以上がwoocommerce_coupon_validate_user_usage_limit
アクションに関する詳細な解説とサンプルコードです。