概要
woocommerce_webhook_payloadは、WooCommerceのWebhookが送信される際に、そのペイロードをカスタマイズするためのフィルターフックです。このフィルタを使うことで、デフォルトのデータ形式を変更したり、特定の情報を追加したりすることができます。
よく使用されるケースとしては以下の6つが考えられます。
- 特定のカスタムフィールドをペイロードに追加する。
- 不要なデータを削除して、ペイロードのサイズを小さくする。
- 外部サービスとの統合のためにデータ形式を変更する。
- デバッグ情報を追加してエラーログに記録させる。
- Webhookのトリガーに基づいて異なるデータを送信する。
- セキュリティ強化のためにトークンやハッシュを追加する。
構文
add_filter('woocommerce_webhook_payload', 'custom_webhook_payload', 10, 4);
パラメータ
$payload: 送信されるペイロードの配列。$webhook: 現在のWebhookオブジェクト。$order: 注文オブジェクト(関連する場合)。$subscription: サブスクリプションオブジェクト(関連する場合)。
戻り値
- カスタマイズされたペイロードの配列。
使用可能なプラグインのバージョン
- WooCommerce: 2.2+
- 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: カスタムフィールドをペイロードに追加する
add_filter('woocommerce_webhook_payload', 'add_custom_field_to_payload', 10, 4);
function add_custom_field_to_payload($payload, $webhook, $order, $subscription) {
if ($order) {
$payload['custom_field'] = get_post_meta($order->get_id(), 'your_custom_field', true);
}
return $payload;
}
このサンプルコードは、WooCommerceの注文に関連するカスタムフィールドをペイロードに追加します。
サンプル2: 不要なデータを削除する
add_filter('woocommerce_webhook_payload', 'remove_unnecessary_data', 10, 4);
function remove_unnecessary_data($payload, $webhook, $order, $subscription) {
unset($payload['unused_data']);
return $payload;
}
このコードは、不要なデータをペイロードから削除します。
サンプル3: 特定の条件によってペイロードを変更する
add_filter('woocommerce_webhook_payload', 'conditional_payload_modification', 10, 4);
function conditional_payload_modification($payload, $webhook, $order, $subscription) {
if ($order && $order->get_total() > 100) {
$payload['discount_applied'] = 'yes';
}
return $payload;
}
このサンプルは、注文の合計が特定の値を超える場合に、ペイロードに割引の情報を追加します。
サンプル4: セキュリティのためにトークンを追加する
add_filter('woocommerce_webhook_payload', 'add_security_token', 10, 4);
function add_security_token($payload, $webhook, $order, $subscription) {
$payload['security_token'] = hash('sha256', time() . 'some_random_string');
return $payload;
}
こちらのコードは、セキュリティトークンをペイロードに追加します。
サンプル5: デバッグ情報を追加する
add_filter('woocommerce_webhook_payload', 'add_debug_info', 10, 4);
function add_debug_info($payload, $webhook, $order, $subscription) {
$payload['debug_info'] = 'Debug information here';
return $payload;
}
このサンプルは、ペイロードにデバッグ情報を追加します。
これらのサンプルコードは、特定のニーズに応じたWebhooksのカスタマイズに役立つでしょう。