概要
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のカスタマイズに役立つでしょう。