概要
woocommerce_webhook_should_deliver
フィルタは、WooCommerce において Webhook の配信を制御するために使用されるフックです。このフィルタを使用することで、特定の条件に基づいて WooCommerce の Webhook が配信されるかどうかを判断することができます。開発者はこのフックを使用して、例えば、特定のイベントや状況下で Webhook 通知をスキップしたり、逆に強制的に配信したりすることが可能です。
woocommerce_webhook_should_deliver
フィルタがよく使われる機能の例は以下の通りです:
- 外部サービスとの統合におけるカスタマイズ
- 特定のユーザーグループに基づいた配信制御
- 購入履歴に基づく条件付き配信
- 商品の在庫状況に応じた配信
- 管理者の設定に基づく配信の有効/無効
- 特定のカスタムフィールドに基づいた配信制御
このフィルタは、WooCommerce 5.0 以降および WordPress 4.6 以降で使用できます。
構文
add_filter('woocommerce_webhook_should_deliver', 'your_function_name', 10, 3);
your_function_name
: フィルターフックを処理するコールバック関数10
: 優先度3
: 引数の数(Webhook、配信、Webhook ID)
パラメータ
$should_deliver
: デフォルトではtrue
、Webhook の配信を許可するかどうかを示すブール値$webhook
: Webhook オブジェクト$event
: イベントの名前
戻り値
- ブール値(
true
またはfalse
)
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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: 特定のユーザーが所有する Webhook のみ配信する
add_filter('woocommerce_webhook_should_deliver', 'only_user_webhooks', 10, 3);
function only_user_webhooks($should_deliver, $webhook, $event) {
$current_user = wp_get_current_user();
if (!$current_user->has_cap('administrator')) {
return false; // 管理者以外には配信しない
}
return $should_deliver;
}
このサンプルコードでは、現在のユーザーが管理者でない限り、Webhook を配信しないように設定しています。
サンプル2: 特定のイベントに基づいて配信を制御
add_filter('woocommerce_webhook_should_deliver', 'conditional_webhook_delivery', 10, 3);
function conditional_webhook_delivery($should_deliver, $webhook, $event) {
if ($event == 'order.created') {
return false; // 注文作成の Webhook は配信しない
}
return $should_deliver;
}
このコードは、注文が作成された際の Webhook 配信をスキップする例です。
サンプル3: 新しい商品が追加された時のみ配信する
add_filter('woocommerce_webhook_should_deliver', 'new_product_webhook_delivery', 10, 3);
function new_product_webhook_delivery($should_deliver, $webhook, $event) {
if ($event == 'product.created') {
return true; // 新商品の場合は配信を許可
}
return false; // その他は配信しない
}
このサンプルでは、新商品が作成された場合のみ Webhook を配信します。
サンプル4: Webhook の配信時間を制限
add_filter('woocommerce_webhook_should_deliver', 'restrict_webhook_time', 10, 3);
function restrict_webhook_time($should_deliver, $webhook, $event) {
$current_hour = date('G');
if ($current_hour < 9 || $current_hour > 17) {
return false; // 午前9時から午後5時の間しか配信しない
}
return $should_deliver;
}
このコードは、指定した時間帯(午前9時から午後5時)以外は Webhook を配信しないようにします。
サンプル5: 特定の条件に基づいて Webhook を強制配信
add_filter('woocommerce_webhook_should_deliver', 'force_webhook_delivery', 10, 3);
function force_webhook_delivery($should_deliver, $webhook, $event) {
if (is_user_logged_in() && current_user_can('edit_posts')) {
return true; // ログインしているユーザーには配信を許可
}
return $should_deliver;
}
この最新のサンプルでは、ログインしていて標準の投稿を編集できるユーザーには Webhook 配信を許可する設定になっています。