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

概要

woocommerce_variation_is_purchasableフィルタは、WooCommerceプラグイン内で製品のバリエーションが購入可能であるかどうかを制御するために使用されます。このフィルタは、バリエーションごとに価格の可用性をカスタマイズするために用いられます。特に、製品の特定の条件やビジネスロジックに基づいて、購入可能な状態を調整したい場合に便利です。一般的には以下のような機能に利用されます。

  1. 特定のバリエーションを在庫切れとみなす
  2. 特定のユーザー権限に基づいて購入可能状態を変更する
  3. 特定の地域や国によって購入可能性を制限する
  4. プロモーションや割引に応じてバリエーションの購入可否を変更する
  5. 妊娠中またはアレルギーのある商品に対して警告を表示する
  6. バリエーションが特定条件に基づいてカートに追加できるか制御する

構文

add_filter( 'woocommerce_variation_is_purchasable', 'your_function_name', 10, 2 );

パラメータ

  • $is_purchasable: バリエーションが購入可能であるかどうかを示す真偽値。
  • $variation: 対象となるバリエーションのオブジェクト。

戻り値

フィルタを使用した後のバリエーションの購入可能状態(boolean)。

使用可能なバージョン

  • WooCommerceのバージョン: 3.0.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_variation_is_purchasable', 'disable_out_of_stock_variations', 10, 2 );

function disable_out_of_stock_variations( $is_purchasable, $variation ) {
    if ( ! $variation->is_in_stock() ) {
        return false;
    }
    return $is_purchasable;
}

このサンプルコードは、在庫が無いバリエーションを購入不可に設定しています。

引用元: https://docs.woocommerce.com/

サンプルコード2: 特定のユーザーロールに基づく制御

add_filter( 'woocommerce_variation_is_purchasable', 'restrict_variation_based_on_user_role', 10, 2 );

function restrict_variation_based_on_user_role( $is_purchasable, $variation ) {
    if ( ! current_user_can( 'manager' ) ) {
        return false; // 'manager' ロール以外のユーザーには購入不可
    }
    return $is_purchasable;
}

このコードでは、特定のユーザー権限を持つユーザーのみがバリエーションを購入可能にしています。

引用元: https://woocommerce.com/document/

サンプルコード3: 地域に基づく購入不可の制御

add_filter( 'woocommerce_variation_is_purchasable', 'allow_variation_based_on_location', 10, 2 );

function allow_variation_based_on_location( $is_purchasable, $variation ) {
    $allowed_countries = array( 'US', 'CA' );
    if ( !in_array( WC()->customer->get_shipping_country(), $allowed_countries ) ) {
        return false; // 許可された国以外は購入不可
    }
    return $is_purchasable;
}

このコードは、特定の国に住むユーザーのみがバリエーションを購入できるように制限しています。

引用元: https://docs.woocommerce.com/document/

サンプルコード4: セール時の購入可否の変更

add_filter( 'woocommerce_variation_is_purchasable', 'change_variation_purchasability_on_sale', 10, 2 );

function change_variation_purchasability_on_sale( $is_purchasable, $variation ) {
    if ( $variation->is_on_sale() ) {
        return true; // セール中のバリエーションは常に購入可能
    }
    return $is_purchasable;
}

このコードは、セール中のバリエーションは常に購入可能に設定しています。

引用元: https://woocommerce.com/document/

サンプルコード5: アレルギー警告の追加

add_filter( 'woocommerce_variation_is_purchasable', 'alert_if_allergy_item', 10, 2 );

function alert_if_allergy_item( $is_purchasable, $variation ) {
    if ( $variation->get_meta( 'contains_allergens' ) ) {
        wc_add_notice( 'このバリエーションにはアレルゲンが含まれています。', 'notice' );
    }
    return $is_purchasable;
}

このサンプルコードは、アレルゲンを含むバリエーションが選択された場合、注意喚起のメッセージを表示します。

引用元: https://woocommerce.com/document/

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


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