概要
woocommerce_coupon_validate_minimum_amount
フィルタは、WooCommerceにおけるクーポンの最小金額検証をカスタマイズするためのフックです。このフィルタは、指定されたクーポンの使用条件が満たされているかどうかを確認する際に使用されます。これを使うことで、特定の条件に応じた柔軟なクーポンシステムの実装が可能になります。例えば、特定の製品カテゴリや特定のカスタムフィールドが満たされているかどうかで最小金額を変更することができます。
よく使われる用途には以下が含まれます:
1. 特定の製品が含まれている場合の最小金額の調整
2. ユーザーロールによる割引条件の変更
3. セール中のクーポンの最小金額の無視
4. 特定の条件下でのスタートアップ気遣いの最小金額設定
5. 複数のクーポン間での最小金額の優先順位の調整
6. ユーザーの購入履歴に基づくパーソナライズ化された最小金額設定
構文
add_filter('woocommerce_coupon_validate_minimum_amount', 'your_function_name', 10, 3);
パラメータ
$valid
: クーポンが有効かどうかの真偽値。$coupon
: 検証されているクーポンオブジェクト。$cart
: カートの内容に関するデータ。
戻り値
bool
: クーポンの使用が許可される場合はtrue
、そうでない場合はfalse
。
使用可能なプラグインWooCommerceのバージョン
- WooCommerce 3.0以降のバージョンで利用可能。
使用可能なWordPressのバージョン
- 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: 特定の製品がカートにある場合の最小金額を設定
このサンプルコードは、特定の製品IDがカートに存在する場合にクーポンの最小金額を減少させるものです。
add_filter('woocommerce_coupon_validate_minimum_amount', 'custom_coupon_minimum_amount', 10, 3);
function custom_coupon_minimum_amount($valid, $coupon, $cart) {
$product_id = 123; // 製品IDを指定
$minimum_amount = 50; // 基本の最小金額
// カートに特定の製品が含まれている場合
if ( WC()->cart->find_product_in_cart( $cart->get_cart_item_keys() ) === $product_id ) {
$minimum_amount = 30; // 新規の最小金額
}
return $cart->total >= $minimum_amount;
}
引用元: na
サンプル2: ユーザーロールに基づいた最小金額の設定
このコードは、特定のユーザーのロールに応じて最小金額を調整する例です。
add_filter('woocommerce_coupon_validate_minimum_amount', 'role_based_coupon_minimum_amount', 10, 3);
function role_based_coupon_minimum_amount($valid, $coupon, $cart) {
$minimum_amount = 100; // 基本の最小金額
// 管理者の場合は最小金額を無視
if (current_user_can('administrator')) {
return true; // 有効
}
return $cart->total >= $minimum_amount; // 他のユーザーは通常の最小金額をチェック
}
引用元: na
サンプル3: セール中のクーポンに対する最小金額の無視
このコードは、特定のクーポンがセール中であるかどうかを確認し、最小金額を無視する例です。
add_filter('woocommerce_coupon_validate_minimum_amount', 'sale_coupon_minimum_amount', 10, 3);
function sale_coupon_minimum_amount($valid, $coupon, $cart) {
if ($coupon->is_on_sale()) {
return true; // セール中のクーポンは常に有効
}
return $valid; // 通常通り
}
引用元: na
サンプル4: 購入履歴に基づいた最小金額の条件
この例では、ユーザーの購入履歴に基づいて特定の最小金額を設定します。
add_filter('woocommerce_coupon_validate_minimum_amount', 'purchase_history_based_minimum_amount', 10, 3);
function purchase_history_based_minimum_amount($valid, $coupon, $cart) {
// 購入履歴を取得する
$customer_orders = wc_get_orders(array('customer' => get_current_user_id()));
// 過去に特定の製品を購入したかチェック
$has_purchased_product = false;
foreach ($customer_orders as $order) {
if ($order->has_product(123)) { // 製品ID 123を持っているか
$has_purchased_product = true;
break;
}
}
return $has_purchased_product || $cart->total >= 50;
}
引用元: na
サンプル5: マルチクーポンシステムの優先順位調整
この例では、複数のクーポンが適用されている場合に最小金額の優先順位を調整します。
add_filter('woocommerce_coupon_validate_minimum_amount', 'multi_coupon_priority_minimum_amount', 10, 3);
function multi_coupon_priority_minimum_amount($valid, $coupon, $cart) {
$all_coupons = $cart->get_applied_coupons();
// 複数のクーポンがある場合の最小金額設定
if (count($all_coupons) > 1) {
return $cart->total >= 100; // すべてのクーポンに対して新規の最小金額
}
return $valid; // 一つのクーポンのみのときは通常通り
}
引用元: na