概要
woocommerce_coupon_is_valid_for_cart
フィルタは、WooCommerceにおいてクーポンがカートに適用可能かどうかを判断する際に使用されるフックです。このフィルタを使用することで、特定の条件に基づいてクーポンの有効性を制御することができます。一般的にこのフィルタは次のような機能を実装する際によく使われます。
- カート内の特定の商品に対するクーポンの適用制限。
- ユーザーのロールに基づくクーポンの制御。
- 商品のカテゴリーに基づくクーポンの制御。
- クーポンの使用回数の制限を実装。
- クーポン適用条件のカスタマイズ。
- 特定の日付範囲におけるクーポンの有効性チェック。
構文
add_filter( 'woocommerce_coupon_is_valid_for_cart', 'custom_coupon_validation', 10, 3 );
パラメータ
$valid
(bool): クーポンの適用の可否。$coupon
(WC_Coupon): 現在のクーポンオブジェクト。$cart
(WC_Cart): 現在のカートオブジェクト。
戻り値
bool
: クーポンが有効な場合はtrue
、無効な場合はfalse
。
使用可能なプラグインとバージョン
- WooCommerce: バージョン5.0以降
- WordPress: バージョン5.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_for_cart', 'restrict_coupon_for_category', 10, 3 );
function restrict_coupon_for_category( $valid, $coupon, $cart ) {
if ( $coupon->get_code() === 'DISCOUNT10' ) {
foreach ( $cart->get_cart() as $cart_item ) {
if ( has_term( 'restricted-category', 'product_cat', $cart_item['product_id'] ) ) {
return false;
}
}
}
return $valid;
}
引用元: https://woocommerce.com/
サンプルコード2: 特定のユーザーロールにのみクーポンを適用する
このコードは、特定のユーザーのロールに基づいてクーポンの適用を制御します。
add_filter( 'woocommerce_coupon_is_valid_for_cart', 'restrict_coupon_to_user_role', 10, 3 );
function restrict_coupon_to_user_role( $valid, $coupon, $cart ) {
if ( $coupon->get_code() === 'MEMBERDISCOUNT' && ! current_user_can( 'member' ) ) {
return false;
}
return $valid;
}
引用元: https://woocommerce.com/
サンプルコード3: クーポンの使用回数を制限する
このコードは、クーポンの使用回数を1回のみに制限します。
add_filter( 'woocommerce_coupon_is_valid_for_cart', 'limit_coupon_usage', 10, 3 );
function limit_coupon_usage( $valid, $coupon, $cart ) {
$usage_limit = $coupon->get_usage_limit();
if ( $usage_limit > 0 && $coupon->get_usage_count() >= $usage_limit ) {
return false;
}
return $valid;
}
引用元: https://woocommerce.com/
サンプルコード4: 特定のクーポンコードを無効化する
このコードは、特定のクーポンコードを無効化します。
add_filter( 'woocommerce_coupon_is_valid_for_cart', 'disable_specific_coupon', 10, 3 );
function disable_specific_coupon( $valid, $coupon, $cart ) {
if ( $coupon->get_code() === 'INVALIDCODE' ) {
return false;
}
return $valid;
}
引用元: https://woocommerce.com/
サンプルコード5: カートに特定の商品がある場合にのみクーポンを適用可能にする
このコードは、カート内に特定の商品がある場合のみクーポンを適用します。
add_filter( 'woocommerce_coupon_is_valid_for_cart', 'coupon_only_for_specific_product', 10, 3 );
function coupon_only_for_specific_product( $valid, $coupon, $cart ) {
if ( $coupon->get_code() === 'PRODUCTDISCOUNT' ) {
$has_product = false;
foreach ( $cart->get_cart() as $cart_item ) {
if ( $cart_item['product_id'] === 123 ) {
$has_product = true;
break;
}
}
if ( ! $has_product ) {
return false;
}
}
return $valid;
}
引用元: https://woocommerce.com/