WooCommerce Webhook:注文時に商品のカスタムフィールドも飛ばす
- WooCommerce -
2023.06.28
WooCommerceサイトで新規注文が入ったときに、Webhookで飛ばす注文情報に商品のカスタムフィールド情報を追加したいときのfunctions.phpカスタマイズ方法について。
以下、
- "management_id"というカスタムフィールドを商品に追加して管理している
- 注文が入ったら、webhookで設定したURLに対してpostするpayloadの中に"management_id"を含めたい
という場合のコードです。
一度に複数商品の注文が入っても、商品それぞれのmanagement_idが飛ぶようになっています。
7, 8行目のmanagement_idを環境に合わせて書き換えてください。
WP REST API v3を想定しています。
functions.phpfunction modify_order_webhook_payload( $payload, $resource, $resource_id, $id ) {
if ( $resource !== 'order' ) {
return $payload;
}
for($i = 0; $i < count($payload["line_items"]); $i++) {
$product_id = (int)$payload["line_items"][$i]["product_id"];
$management_id = get_post_meta($product_id, "management_id", true);
$payload["line_items"][$i]['management_id'] = $management_id;
}
return $payload;
}
add_filter( 'woocommerce_webhook_payload', 'modify_order_webhook_payload', 10, 4 );
woocommerce_webhook_payloadというフィルターフックを利用。
以下記事を参考にカスタマイズしました。