概要
woocommerce_webhook_http_argsフィルタは、WooCommerceで使用されるWebhookのHTTPリクエストパラメータをカスタマイズするために使用されるフックです。このフィルタを使うことで、Webhookの送信時に送信するHTTPヘッダーやボディ内容を自由に変更できます。具体的には、以下のような機能を実装する際によく使用されます。
- カスタムヘッダーの追加
- 認証トークンの設定
- データ形式の変更(JSON、XMLなど)
- タイムアウト設定の調整
- URLリダイレクトの制御
- プロキシ設定の追加
構文
add_filter('woocommerce_webhook_http_args', 'your_custom_function', 10, 2);
パラメータ
array $args: Webhookに関連するHTTPパラメータの配列WC_Webhook $webhook: 現在のWebhookオブジェクト
戻り値
array: 修正されたHTTPパラメータの配列
使用可能なプラグインバージョン
- WooCommerce: 2.2.0 以降
- WordPress: 4.0 以降
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| 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_http_args', 'add_custom_header', 10, 2);
function add_custom_header($args, $webhook) {
$args['headers']['X-Custom-Header'] = 'MyValue';
return $args;
}
引用元: https://woocommerce.com
サンプル2: 認証トークンの設定
WebhookリクエストにBearerトークンを追加する例です。
add_filter('woocommerce_webhook_http_args', 'set_auth_token', 10, 2);
function set_auth_token($args, $webhook) {
$args['headers']['Authorization'] = 'Bearer your_auth_token_here';
return $args;
}
引用元: https://woocommerce.com
サンプル3: データ形式の変更
送信データの形式をJSONに変更するサンプルです。
add_filter('woocommerce_webhook_http_args', 'change_data_format', 10, 2);
function change_data_format($args, $webhook) {
$args['body'] = json_encode($args['body']);
$args['headers']['Content-Type'] = 'application/json';
return $args;
}
引用元: https://woocommerce.com
サンプル4: タイムアウト設定の調整
WebhookのHTTPリクエストのタイムアウトを調整する例です。
add_filter('woocommerce_webhook_http_args', 'adjust_timeout', 10, 2);
function adjust_timeout($args, $webhook) {
$args['timeout'] = 10; // 10秒に設定
return $args;
}
引用元: https://woocommerce.com
サンプル5: プロキシ設定の追加
プロキシサーバーを設定してWebhookを送信する例です。
add_filter('woocommerce_webhook_http_args', 'set_proxy', 10, 2);
function set_proxy($args, $webhook) {
$args['sslverify'] = false; // SSL証明を無視
$args['proxy'] = 'tcp://proxy.server.com:8080'; // プロキシの設定
return $args;
}
引用元: https://woocommerce.com