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

概要

woocommerce_webhook_should_deliver フィルタは、WooCommerce において Webhook の配信を制御するために使用されるフックです。このフィルタを使用することで、特定の条件に基づいて WooCommerce の Webhook が配信されるかどうかを判断することができます。開発者はこのフックを使用して、例えば、特定のイベントや状況下で Webhook 通知をスキップしたり、逆に強制的に配信したりすることが可能です。

woocommerce_webhook_should_deliver フィルタがよく使われる機能の例は以下の通りです:

  1. 外部サービスとの統合におけるカスタマイズ
  2. 特定のユーザーグループに基づいた配信制御
  3. 購入履歴に基づく条件付き配信
  4. 商品の在庫状況に応じた配信
  5. 管理者の設定に基づく配信の有効/無効
  6. 特定のカスタムフィールドに基づいた配信制御

このフィルタは、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 配信を許可する設定になっています。

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


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