概要
woocommerce_variation_is_active
フィルタは、WooCommerceにおいて特定の商品のバリエーションがアクティブかどうかを判断する際に使用されるフックです。このフィルタを利用することで、開発者は特定の条件に基づいてバリエーションの表示や利用可能性を制御することができます。よく使われるケースは以下の通りです。
- 特定の在庫状況に基づくバリエーションの非表示
- 特定の顧客ロールに基づくバリエーションの制御
- バリエーションのカスタム属性に応じた有効化
- プロモーションやセールに基づくバリエーションの表示制御
- 商品のカスタムフィールドに応じたバリエーションの制御
- サイトの特定デザイン要件に基づくバリエーションの制御
構文
add_filter('woocommerce_variation_is_active', 'my_custom_variation_status', 10, 2);
パラメータ
$is_active
(bool): バリエーションがアクティブかどうかを示すフラグ$variation
(WC_Product_Variation): 対象のバリエーションオブジェクト
戻り値
- (bool): バリエーションをアクティブとするかどうかのフラグ
使用可能なバージョン
- WooCommerceのバージョン: 2.0.0以降
- WordPressのバージョン: 4.0以降
サンプルコード
サンプルコード1: 在庫がないバリエーションを非表示にする
add_filter('woocommerce_variation_is_active', function($is_active, $variation) {
return $variation->get_stock_quantity() > 0 ? $is_active : false;
}, 10, 2);
// 説明: このコードは、在庫が0のバリエーションを非表示にします。
サンプルコード2: 特定のユーザーグループに基づくバリエーションの制御
add_filter('woocommerce_variation_is_active', function($is_active, $variation) {
if (current_user_can('premium_member') && $variation->get_meta('_show_to_members')) {
return true; // プレミアム会員にはこのバリエーションを表示
}
return false; // 一般会員には非表示
}, 10, 2);
// 説明: プレミアム会員のみに特定のバリエーションを表示します。
サンプルコード3: カスタムフィールドに基づくバリエーションの制御
add_filter('woocommerce_variation_is_active', function($is_active, $variation) {
return $variation->get_meta('_custom_field') === 'enabled' ? $is_active : false;
}, 10, 2);
// 説明: カスタムフィールドが "enabled" の場合のみ、バリエーションを有効にします。
サンプルコード4: 特定の条件下でのバリエーション表示
add_filter('woocommerce_variation_is_active', function($is_active, $variation) {
if (isset($_GET['promo']) && $_GET['promo'] === 'active') {
return $is_active; // プロモーション条件によってバリエーションを表示
}
return false; // その他の場合は非表示
}, 10, 2);
// 説明: クエリパラメータに基づいてバリエーションの表示を制御します。
サンプルコード5: デフォルトバリエーションをアクティブにする
add_filter('woocommerce_variation_is_active', function($is_active, $variation) {
$default_variation = get_post_meta($variation->get_id(), '_is_default', true);
return $default_variation ? true : $is_active;
}, 10, 2);
// 説明: デフォルト設定のバリエーションを常にアクティブにします。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |
この表は、woocommerce_variation_is_active
フィルタが WooCommerce の内部でどのアクションと共に使用されることがあるかを示しています。