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

概要

woocommerce_coupon_is_valid_for_cartフィルタは、WooCommerceにおいてクーポンがカートに適用可能かどうかを判断する際に使用されるフックです。このフィルタを使用することで、特定の条件に基づいてクーポンの有効性を制御することができます。一般的にこのフィルタは次のような機能を実装する際によく使われます。

  1. カート内の特定の商品に対するクーポンの適用制限。
  2. ユーザーのロールに基づくクーポンの制御。
  3. 商品のカテゴリーに基づくクーポンの制御。
  4. クーポンの使用回数の制限を実装。
  5. クーポン適用条件のカスタマイズ。
  6. 特定の日付範囲におけるクーポンの有効性チェック。

構文

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/

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


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