WooCommerce Webhook:注文時に商品のカスタムフィールドも飛ばす

- WooCommerce -
2023.06.28
woocommerce/ウーコマース

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というフィルターフックを利用。

以下記事を参考にカスタマイズしました。

参考How to add custom fields to WooCommerce webhooks?

↑TOP