概要
woocommerce_apply_with_individual_use_coupon
フィルタは、WooCommerceで個別入用クーポンが適用可能かどうかを制御するためのフックです。このフィルタを利用することで、カートにあるアイテムや使われている他のクーポンに応じて特定のロジックを実装できます。このフィルタは、次のような機能を実装する際によく使用されます。
- 特定の条件下でのみクーポンを適用する
- 他のクーポンとの互換性を制御する
- 特定の商品やカテゴリーでのクーポンの使用制限
- クーポンの適用状況をカスタマイズする
- ユーザーの役割に応じたクーポンの使用制限
- 特定の時間帯や日付でのクーポンの適用を制御する
構文
apply_filters( 'woocommerce_apply_with_individual_use_coupon', $apply, $coupon, $cart );
パラメータ
$apply
: bool型。クーポンを適用できるかどうかを示す。$coupon
: クーポンの情報を含むオブジェクト。$cart
: カートの情報を含むオブジェクト。
戻り値
- bool型。クーポンが適用可能であればtrueを返し、適用不可能であればfalseを返す。
使用可能なバージョン
- WooCommerce: 4.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_apply_with_individual_use_coupon', 'custom_coupon_restriction', 10, 3 );
function custom_coupon_restriction( $apply, $coupon, $cart ) {
if ( $coupon->code === 'SPECIFIC_COUPON' ) {
// 特定のクーポンは常に適用可能
return true;
}
return $apply; // デフォルトの挙動を継続
}
このサンプルコードは、特定のクーポン(ここではSPECIFIC_COUPON
)が常に適用可能であるように制御します。引用元: https://woocommerce.com/
サンプル2: 他のクーポンがある場合の制御
add_filter( 'woocommerce_apply_with_individual_use_coupon', 'restrict_coupon_when_used', 10, 3 );
function restrict_coupon_when_used( $apply, $coupon, $cart ) {
if ( count( $cart->get_coupons() ) > 1 ) {
return false; // 複数のクーポンが使われている場合、適用しない
}
return $apply;
}
このサンプルコードは、カートに複数のクーポンが存在する場合に、クーポンの適用を無効にします。引用元: https://woocommerce.com/
サンプル3: 商品カテゴリーに基づくクーポン適用
add_filter( 'woocommerce_apply_with_individual_use_coupon', 'category_based_coupon', 10, 3 );
function category_based_coupon( $apply, $coupon, $cart ) {
$categories = $cart->get_cart_item_categories();
if ( in_array( 'restricted-category', $categories ) && $coupon->code !== 'CATEGORY_COUPON' ) {
return false; // 特定のカテゴリーに対して、特定のクーポン以外は適用不可
}
return $apply;
}
このサンプルコードでは、特定のカテゴリーの商品がカートに含まれている際に、特定のクーポン(CATEGORY_COUPON
)以外のクーポンを適用できないようにしています。引用元: https://woocommerce.com/
サンプル4: ユーザーの役割に基づくクーポン適用
add_filter( 'woocommerce_apply_with_individual_use_coupon', 'user_role_based_coupon', 10, 3 );
function user_role_based_coupon( $apply, $coupon, $cart ) {
if ( ! current_user_can( 'administrator' ) && $coupon->code === 'ADMIN_ONLY' ) {
return false; // 管理者以外はADMIN_ONLYクーポンを使用できない
}
return $apply;
}
このサンプルコードでは、管理者以外のユーザーが特定のクーポン(ADMIN_ONLY
)を使用できないようにしています。引用元: https://woocommerce.com/
サンプル5: 特定の日時でのクーポンの有効性
add_filter( 'woocommerce_apply_with_individual_use_coupon', 'time_based_coupon', 10, 3 );
function time_based_coupon( $apply, $coupon, $cart ) {
$current_time = current_time( 'H' ); // 現在の時刻を取得
if ( $current_time < 9 || $current_time > 17 ) {
return false; // 09:00〜17:00の間でしか適用しない
}
return $apply;
}
このサンプルコードは、特定の時間帯(09:00〜17:00)のみクーポンを適用できるように設定しています。引用元: https://woocommerce.com/