概要
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;
});
このコードは、管理画面でのプロモーションを常に抑制します。