プラグインWooCommerceのwoocommerce_apply_with_individual_use_couponフィルタの使用方法・解説

概要

woocommerce_apply_with_individual_use_coupon フィルタは、WooCommerceで個別入用クーポンが適用可能かどうかを制御するためのフックです。このフィルタを利用することで、カートにあるアイテムや使われている他のクーポンに応じて特定のロジックを実装できます。このフィルタは、次のような機能を実装する際によく使用されます。

  1. 特定の条件下でのみクーポンを適用する
  2. 他のクーポンとの互換性を制御する
  3. 特定の商品やカテゴリーでのクーポンの使用制限
  4. クーポンの適用状況をカスタマイズする
  5. ユーザーの役割に応じたクーポンの使用制限
  6. 特定の時間帯や日付でのクーポンの適用を制御する

構文

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/

この関数について質問する


上の計算式の答えを入力してください