概要
woocommerce_coupon_is_valid
フィルタは、WooCommerceにおいてクーポンの有効性を検証する際に使用されるフックです。このフィルタを利用することで、クーポンコードが適用される際のビジネスロジックや条件をカスタマイズすることができます。特に以下の機能を実装する際によく使われます。
- 特定のユーザーグループに対するクーポンの制限
- クーポンの使用条件のカスタマイズ
- 特定の商品のみで利用できるクーポンの設定
- 利用回数が制限されたクーポンのチェック
- 有効期限のカスタマイズ
- 他のクーポンとの併用可否の設定
構文
apply_filters( 'woocommerce_coupon_is_valid', $valid, $coupon, $discount, $cart );
パラメータ
$valid
: クーポンが有効であればtrue
、無効であればfalse
のブール値。$coupon
: 現在のクーポンオブジェクト。$discount
: 適用される割引情報。$cart
: 現在のカート情報。
戻り値
フィルタの戻り値は、クーポンが有効かどうかのブール値です。
使用可能なプラグインのバージョン
- WooCommerce: 3.0以上
- 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_is_valid', 'restrict_coupon_to_specific_user', 10, 4);
function restrict_coupon_to_specific_user($valid, $coupon, $discount, $cart) {
$user_id = get_current_user_id();
$allowed_user_id = 123; // 許可するユーザーのID
if ($user_id !== $allowed_user_id) {
return false;
}
return $valid;
}
サンプルコード2: クーポンの使用条件を変更
このコードは、特定の製品がカートに存在する場合のみクーポンを適用できるようにします。
add_filter('woocommerce_coupon_is_valid', 'restrict_coupon_to_specific_product', 10, 4);
function restrict_coupon_to_specific_product($valid, $coupon, $discount, $cart) {
$product_id = 456; // 制限したい商品のID
if (!WC()->cart->find_product_in_cart($product_id)) {
return false;
}
return $valid;
}
サンプルコード3: 利用回数が制限されたクーポン
このコードは、クーポンの使用回数が5回に制限されている場合のチェックを行います。
add_filter('woocommerce_coupon_is_valid', 'limit_coupon_usage_count', 10, 4);
function limit_coupon_usage_count($valid, $coupon, $discount, $cart) {
$usage_count = get_post_meta($coupon->id, 'usage_count', true);
if ($usage_count >= 5) {
return false;
}
return $valid;
}
サンプルコード4: 有効期限のカスタマイズ
このコードでは、特定の日付以前にクーポンが使用されることを許可します。
add_filter('woocommerce_coupon_is_valid', 'set_coupon_expiry_date', 10, 4);
function set_coupon_expiry_date($valid, $coupon, $discount, $cart) {
$expiry_date = '2023-12-31'; // 有効期限の日付
if (strtotime($expiry_date) < time()) {
return false;
}
return $valid;
}
サンプルコード5: 他のクーポンとの併用可否設定
このコードは、特定のクーポンと一緒には使用できないように設定します。
add_filter('woocommerce_coupon_is_valid', 'restrict_coupon_combination', 10, 4);
function restrict_coupon_combination($valid, $coupon, $discount, $cart) {
$restricted_coupon = 'SUMMER2023'; // 併用禁止のクーポンコード
if (in_array($restricted_coupon, $cart->get_coupons())) {
return false;
}
return $valid;
}
これらのサンプルコードを参考にすることで、woocommerce_coupon_is_valid
フィルタを活用したカスタマイズが可能になります。