概要
woocommerce_coupon_is_valid_for_product
フィルタは、WooCommerceプラグインにおいてクーポンの適用可否を判断する際に使用されるフックです。このフィルタを利用することで、特定の製品に対してクーポンの適用を制御することができます。具体的には、以下のようなケースでよく使われます。
- 特定の製品カテゴリにのみクーポンを適用する。
- 特定の製品IDを含む製品に対してクーポンを有効にする。
- 特定のユーザーに対してのみクーポンを適用する。
- 購入数に応じてクーポンの適用を変更する。
- 特定の製品属性に基づくクーポンの適用の制御。
- 限定的な販促活動によるクーポンの適用の制御。
構文
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/