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

概要

woocommerce_coupon_is_valid フィルタは、WooCommerceにおいてクーポンの有効性を検証する際に使用されるフックです。このフィルタを利用することで、クーポンコードが適用される際のビジネスロジックや条件をカスタマイズすることができます。特に以下の機能を実装する際によく使われます。

  1. 特定のユーザーグループに対するクーポンの制限
  2. クーポンの使用条件のカスタマイズ
  3. 特定の商品のみで利用できるクーポンの設定
  4. 利用回数が制限されたクーポンのチェック
  5. 有効期限のカスタマイズ
  6. 他のクーポンとの併用可否の設定

構文

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 フィルタを活用したカスタマイズが可能になります。

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


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