Is it possible to access custom fields for orders, products, customers via WooCommerce REST API? If not natively, then what plugins or workarounds or hacks are out there that work? Thanks!
3 Answers
Answering my own question:
It is possible using the following: (using v3 legacy API)
To send custom fields back to the server: (For Orders)
{
"order_meta": {
"key": "value"
}
}
To retrieve custom fields from server use this filter with your end point:
http://www.example.com/wc-api/v3/orders?filter[meta]=true
This works for Products as well.
16 Comments
As mentioned in the comment after WooCommerce creates an order via the API it will fire woocommerce_api_create_order hook, you can make use of it.
Add the following code to your theme's functions.php file
add_action( 'woocommerce_api_create_order', 'my_woocommerce_api_create_order', 10, 2);
function my_woocommerce_api_create_order( $order_id, $data ) {
// $data contains the data was posted, add code to extract the required
// fields and process it as required
}
Similarly look at the code in plugins/woocommerce/includes/api/*.php files, find the suitable action or filter hook for the end point and use it.
plugins/woocommerce/includes/api/*.phpfiles, find the correct action or filter hook and use it. For eg: when WooCommerce creates an order via the API, after creating the order it offers the following hookdo_action( 'woocommerce_api_create_order', $order->id, $data, $this );in that hook you have access to the$datathat was sent , you can extract out your custom field values and process it.