概要
woocommerce_marketplace_suppress_promotions
フィルタは、WooCommerceでのプロモーション表示を制御するために使用されます。このフィルタを使用することで、特定の条件下で自動的に適用されるプロモーションを抑制することができます。主に以下のような機能を実装する際に使われることが多いです。
- 特定のユーザーグループに対するプロモーションの非表示
- 特定の商品カテゴリーのプロモーションを無効化
- 各種割引やクーポンの適用を細かく制御
- プロモーション処理のカスタマイズ
- 商品ページやカートページでの特定プロモーションのフィルタリング
- 外部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;
});
このコードは、管理画面でのプロモーションを常に抑制します。