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

概要

woocommerce_marketplace_suppress_promotions フィルタは、WooCommerceでのプロモーション表示を制御するために使用されます。このフィルタを使用することで、特定の条件下で自動的に適用されるプロモーションを抑制することができます。主に以下のような機能を実装する際に使われることが多いです。

  1. 特定のユーザーグループに対するプロモーションの非表示
  2. 特定の商品カテゴリーのプロモーションを無効化
  3. 各種割引やクーポンの適用を細かく制御
  4. プロモーション処理のカスタマイズ
  5. 商品ページやカートページでの特定プロモーションのフィルタリング
  6. 外部APIとの連携におけるプロモーションの動的制御

このフィルタの構文は次のようになっています。

add_filter('woocommerce_marketplace_suppress_promotions', 'your_callback_function', 10, 2);

パラメータ

  • $suppress (bool) : プロモーションが抑制されているかどうかのフラグ。
  • $context (string) : プロモーションの使用文脈。

戻り値

  • このフィルタは、プロモーションを抑制するかどうかを決定するための真偽値を返します。

使用可能なバージョン

  • WooCommerceのバージョン: 3.0 以降
  • WordPressのバージョン: 4.5 以上

この関数のアクションでの使用可能性

アクション 使用例
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_marketplace_suppress_promotions', function($suppress, $context) {
    if (current_user_can('wholesale_customer')) {
        return true;
    }
    return $suppress;
});

このコードは、ユーザーが “wholesale_customer” の場合、プロモーション表示を抑制します。

サンプルコード2: 商品カテゴリーに応じたプロモーションの非表示

add_filter('woocommerce_marketplace_suppress_promotions', function($suppress, $context) {
    if (is_product_category('no-promo')) {
        return true;
    }
    return $suppress;
});

この例では、「no-promo」というカテゴリの商品を表示している場合、プロモーションを非表示にします。

サンプルコード3: カートに商品が一つだけの場合のプロモーション抑制

add_filter('woocommerce_marketplace_suppress_promotions', function($suppress, $context) {
    if (WC()->cart->get_cart_contents_count() === 1) {
        return true;
    }
    return $suppress;
});

このコードは、カートにアイテムが1つだけの場合にプロモーションを抑制します。

サンプルコード4: 特定の商品IDのプロモーションを抑制

add_filter('woocommerce_marketplace_suppress_promotions', function($suppress, $context) {
    global $product;
    if ($product && $product->get_id() === 123) {
        return true;
    }
    return $suppress;
});

ここでは、特定の商品ID(123)に対してプロモーションを抑制します。

サンプルコード5: 管理画面でのプロモーションを常に抑制

add_filter('woocommerce_marketplace_suppress_promotions', function($suppress, $context) {
    if (is_admin()) {
        return true;
    }
    return $suppress;
});

このコードは、管理画面でのプロモーションを常に抑制します。

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


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