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

概要

woocommerce_is_purchasableフィルタは、WooCommerce内で商品が購入可能かどうかを判断するために使用されるフックです。このフックを利用することで、特定の条件に基づいて商品がカートに追加できるかどうかを制御できます。具体的には、以下のようなニーズに応じて使用されることが多いです。

  1. 商品の在庫状態に基づいた購入可能性の制御
  2. ユーザーのロールに基づいた購入制限
  3. 特定のカテゴリー内の商品の購入可否に応じた調整
  4. 日付やプロモーションに基づく購入可能性の変更
  5. 特定のクッキーやセッション情報に基づいてアクセス制御
  6. 定期購買やサブスクリプション商品の特別な条件設定

構文

add_filter( 'woocommerce_is_purchasable', 'my_custom_purchasable_filter', 10, 2 );

パラメータ

  • $purchasable (bool): 商品が購入可能かどうかの真偽値。
  • $product (WC_Product): WooCommerceの商品オブジェクト。

戻り値

  • (bool): フィルタによって変更された購入可能性を示す真偽値。

使用可能なプラグイン・テーマ

  • WooCommerce バージョン: 3.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_is_purchasable', 'disable_purchase_if_out_of_stock', 10, 2 );

function disable_purchase_if_out_of_stock( $purchasable, $product ) {
    if ( ! $product->is_in_stock() ) {
        return false;
    }
    return $purchasable;
}

このコードは、商品が在庫切れの場合に購入を無効にします。

サンプル2: 特定のユーザーグループの購入を制限

add_filter( 'woocommerce_is_purchasable', 'restrict_purchase_by_user_role', 10, 2 );

function restrict_purchase_by_user_role( $purchasable, $product ) {
    if ( ! current_user_can( 'administrator' ) ) {
        return false;
    }
    return $purchasable;
}

このコードは、管理者以外のユーザーが商品の購入をできないようにします。

サンプル3: 特定のカテゴリに属する商品の購入制限

add_filter( 'woocommerce_is_purchasable', 'restrict_purchase_by_category', 10, 2 );

function restrict_purchase_by_category( $purchasable, $product ) {
    if ( has_term( 'restricted-category', 'product_cat', $product->get_id() ) ) {
        return false;
    }
    return $purchasable;
}

このコードは、「restricted-category」カテゴリに属する商品の購入を禁止します。

サンプル4: 特定の日時に購入を無効にする

add_filter( 'woocommerce_is_purchasable', 'disable_purchase_on_specific_dates', 10, 2 );

function disable_purchase_on_specific_dates( $purchasable, $product ) {
    $current_date = date('Y-m-d');
    if ( $current_date === '2023-12-25' ) {
        return false;
    }
    return $purchasable;
}

このコードは、特定の日(クリスマス)に商品の購入を無効にします。

サンプル5: セッション情報に基づく購入制御

add_filter( 'woocommerce_is_purchasable', 'check_purchase_based_on_session', 10, 2 );

function check_purchase_based_on_session( $purchasable, $product ) {
    if ( isset( $_SESSION['restricted_purchase'] ) && $_SESSION['restricted_purchase'] ) {
        return false;
    }
    return $purchasable;
}

このコードは、セッション情報に基づいて商品購入の可否を制御します。

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


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