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

概要

woocommerce_coupon_is_valid_for_product フィルタは、WooCommerceプラグインにおいてクーポンの適用可否を判断する際に使用されるフックです。このフィルタを利用することで、特定の製品に対してクーポンの適用を制御することができます。具体的には、以下のようなケースでよく使われます。

  1. 特定の製品カテゴリにのみクーポンを適用する。
  2. 特定の製品IDを含む製品に対してクーポンを有効にする。
  3. 特定のユーザーに対してのみクーポンを適用する。
  4. 購入数に応じてクーポンの適用を変更する。
  5. 特定の製品属性に基づくクーポンの適用の制御。
  6. 限定的な販促活動によるクーポンの適用の制御。

構文

add_filter('woocommerce_coupon_is_valid_for_product', 'custom_coupon_validation_for_product', 10, 4);

パラメータ

  • $valid (bool): クーポンが有効かどうかの初期値。
  • $coupon (WC_Coupon): 対象のクーポンオブジェクト。
  • $product (WC_Product): 対象の製品オブジェクト。
  • $cart_item (array): カートアイテムの情報。

戻り値

  • (bool): クーポンが特定の製品に対して有効な場合は true、無効な場合は false

使用可能なバージョン

  • WooCommerce: 2.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_for_product', 'custom_category_discount', 10, 4);
function custom_category_discount($valid, $coupon, $product) {
    if (has_term('特定カテゴリ', 'product_cat', $product->get_id())) {
        return true; // 特定カテゴリの製品には適用を許可
    }
    return $valid; // その他の製品では元の有効性を返す
}

このコードは、特定のカテゴリに属する製品に対してクーポンの適用を許可します。

出典: https://docs.woocommerce.com/wc-apidocs/source-class-WC_Discounts.html

サンプルコード 2

add_filter('woocommerce_coupon_is_valid_for_product', 'admin_only_coupon', 10, 4);
function admin_only_coupon($valid, $coupon, $product) {
    if (!current_user_can('administrator')) {
        return false; // 管理者以外のユーザーには使用できない
    }
    return $valid; 
}

このコードは、管理者ユーザーのみが特定のクーポンを使用できるように制限します。

出典: https://www.skyver.ge/tricks/woocommerce-how-to-restrict-coupon-usage-by-user-role

サンプルコード 3

add_filter('woocommerce_coupon_is_valid_for_product', 'quantity_based_coupon', 10, 4);
function quantity_based_coupon($valid, $coupon, $product) {
    $cart_item_qty = WC()->cart->get_cart_item_quantity($product->get_id());
    if ($cart_item_qty > 3) {
        return false; // 3個以上の購入時にはクーポンを無効化
    }
    return $valid; 
}

このコードは、製品の購入数量が3つを超えた場合、クーポンを無効化します。

出典: https://www.chipcloud.com/docs/woocommerce-coupon-simulation

サンプルコード 4

add_filter('woocommerce_coupon_is_valid_for_product', 'attribute_based_coupon', 10, 4);
function attribute_based_coupon($valid, $coupon, $product) {
    $attributes = $product->get_attributes();
    if (isset($attributes['color']) && $attributes['color'] == 'red') {
        return true; // 色属性が赤の場合はクーポンを適用
    }
    return $valid; 
}

このコードは、製品の色属性が赤のものに対してクーポンを使用可能にします。

出典: https://www.businessbloomer.com/woocommerce-custom-coupons/

サンプルコード 5

add_filter('woocommerce_coupon_is_valid_for_product', 'time_based_coupon', 10, 4);
function time_based_coupon($valid, $coupon, $product) {
    if (current_time('timestamp') < strtotime('2023-12-31')) {
        return false; // 2023年12月31日以前はクーポンを無効化
    }
    return $valid; 
}

このコードは、2023年12月31日以前はクーポンを無効にします。

出典: https://www.woocommercesnippets.com/woocommerce-coupon-validation/

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


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