Is it possible to extend the woocommerce products rest endpoint? Is it possible to extend the woocommerce products rest endpoint? wordpress wordpress

Is it possible to extend the woocommerce products rest endpoint?


I found a way of extending the endpoint with register_rest_field.

That way i can both extend (add) and/or overwrite (update) an object.

function register_images_field() {        register_rest_field(            'product',            'images',            array(                'get_callback'    => function ( $object ) {                    $medium_large     = wp_get_attachment_image_src( get_post_thumbnail_id( $object['id'] ), 'medium_large' );                    $medium_large_url = $medium_large['0'];                    $large            = wp_get_attachment_image_src( get_post_thumbnail_id( $object['id'] ), 'large' );                    $large_url        = $large['0'];​                    return array(                        'medium_large' => $medium_large_url,                        'large'        => $large_url,                    );                },                'update_callback' => null,                'schema'          => null,            )        );    }

Source: https://developer.wordpress.org/reference/functions/register_rest_field/


Here a way to change prices. Maybe you can use the same process?

## The following goes inside the constructor ##// Simple, grouped and external productsadd_filter('woocommerce_product_get_price', array( $this, 'custom_price' ), 99, 2 );add_filter('woocommerce_product_get_regular_price', array( $this, 'custom_price' ), 99, 2 );// Variations add_filter('woocommerce_product_variation_get_regular_price', array( $this, 'custom_price' ), 99, 2 );add_filter('woocommerce_product_variation_get_price', array( $this, 'custom_price' ), 99, 2 );// Variable (price range)add_filter('woocommerce_variation_prices_price', array( $this, 'custom_variable_price' ), 99, 3 );add_filter('woocommerce_variation_prices_regular_price', array( $this, 'custom_variable_price' ), 99, 3 );// Handling price caching (see explanations at the end)add_filter( 'woocommerce_get_variation_prices_hash', array( $this, 'add_price_multiplier_to_variation_prices_hash' ), 99, 1 );## This goes outside the constructor ##// Utility function to change the prices with a multiplier (number)public function get_price_multiplier() {    return 2; // x2 for testing}public function custom_price( $price, $product ) {    return $price * get_price_multiplier();}public function custom_variable_price( $price, $variation, $product ) {    return $price * get_price_multiplier();}public function add_price_multiplier_to_variation_prices_hash( $hash ) {    $hash[] = get_price_multiplier();    return $hash;}

Source: Change product prices via a hook in WooCommerce 3