Woocommerce REST API Extending Request Response

I am looking for a way to extend wc-api / vX / orders / reponse. I added some special fields for checking (for example, relationship number, delivery date, etc.). These meta are stored in order (wp_postmeta table). But why don't they return using api?

You can usually extend the api response with some code:

add_action( 'rest_api_init', 'custom_register_api_fields' );

function custom_register_api_fields() {
    register_rest_field( 'shop_order','relation_number',
    array(
        'get_callback'    => 'custom_api_meta_callback',
        'update_callback' => null,
        'schema'          => null,
    )
    );
}

/**
*
* @param array $object Details of current post.
* @param string $field_name Name of field.
* @param WP_REST_Request $request Current request
*
* @return mixed
*/

function custom_api_meta_callback( $object, $field_name, $request ) {
 return get_post_meta( $object[ 'id' ], $field_name, true );
}

But when I test the answer (with Postman and php lib), my-website.co/wc-api/v2/orders user meta is not visible.

Is there any way to register api fields for wc-api?

Tnx!

+4
source share
1 answer

, "line_items"

WC API V2

https://website.com/wp-json/wc/v2/orders

function get_product_order_image( $response, $object, $request ) {

    if( empty( $response->data ) )
        return $response;
    $order_pid= $response->data['line_items'][0]['product_id'];
     $l_w_product_meta = get_post_meta($response->data['line_items'][0]['product_id']);
    $order_imgUrl= wp_get_attachment_url( $l_w_product_meta['_thumbnail_id'][0], 'full' );

    $response->data['line_items'][0]['cover_image'] = $order_imgUrl;

    return $response;
} 

add_filter( "woocommerce_rest_prepare_shop_order_object", array( $this, "get_product_order_image"), 10, 3 );

, - .

0

Source: https://habr.com/ru/post/1661923/


All Articles