WPThumbs
Themes Plugins By purpose By industry Best-of lists Fix it guides
Free Plugin by Braad v1.2.1

Better REST API Featured Images

Adds a top-level field with featured image data including available sizes and URLs to the post object returned by the REST API.

Better REST API Featured Images

The facts

Rating
5★ from 11
Active installs
2k+
Price
Free
Last updated
30 Jul 2016
Added
Oct 2015
Requires WP
4.0
Tested up to
WP 4.6.30
Downloads
62,616

Our analysis

AI-assisted

Better REST API Featured Images is a WordPress plugin that enhances the REST API by adding a 'better_featured_image' field to the post object. This field provides detailed information about the featured image, including available sizes and URLs, without needing a separate request.

This plugin is suited for developers who prefer having featured image data readily available in a top-level field rather than embedded within other media. It can be useful for those who want consistent access to this data without using the query parameter ?_embed.

Best for: Developers looking for enhanced image data in the WordPress REST API.

What it does well

  • Adds a 'better_featured_image' field to the post object
  • Includes detailed image sizes and URLs
  • Reduces the need for additional requests

Where it falls short

  • May not be necessary if you can use ?_embed
  • Limited to WordPress version 4.6.30

Verdict

This plugin provides a specific enhancement for accessing featured image data, but its necessity depends on your use case with the REST API.

From the developer

Braad's own description of Better REST API Featured Images, lightly tidied.

Note: You probably do not need this plugin. The REST API already supports adding the query param ?_embed to your URL and the response will then include all “embedded media”, including the featured image, and the data you get there is exactly what this plugin gives you. The only reasons to use this plugin at this point are if you prefer to have the featured image data in a top level field in the response rather than among other embedded media in the _embedded field, and if you always want the featured image data in the response rather than having to ask for it with ?_embed. I still use this plugin because I do usually want both these things, but definitely give ?_embed a try before using this plugin. 🙂

Version 2 of the WordPress REST API returns a featured_media field (formerly featured_image) on the post object by default, but this field is simply the image ID.

This plugin adds a better_featured_image field to the post object that contains the available image sizes and urls, allowing you to get this information without making a second request.

It takes this:

"featured_media": 13,

And turns it into this:

"featured_media": 13,
"better_featured_image": {
    "id": 13,
    "alt_text": "Hot Air Balloons",
    "caption": "The event featured hot air balloon rides",
    "description": "The hot air balloons from the big event",
    "media_type": "image",
    "media_details": {
      "width": 5760,
      "height": 3840,
      "file": "2015/09/balloons.jpg",
      "sizes": {
        "thumbnail": {
          "file": "balloons-150x150.jpg",
          "width": 150,
          "height": 150,
          "mime-type": "image/jpeg",
          "source_url": "http://api.example.com/wp-content/uploads/2015/09/balloons-150x150.jpg"
        },
        "medium": {
          "file": "balloons-300x200.jpg",
          "width": 300,
          "height": 200,
          "mime-type": "image/jpeg",
          "source_url": "http://api.example.com/wp-content/uploads/2015/09/balloons-300x200.jpg"
        },
        "large": {
          "file": "balloons-1024x683.jpg",
          "width": 1024,
          "height": 683,
          "mime-type": "image/jpeg",
          "source_url": "http://api.example.com/wp-content/uploads/2015/09/balloons-1024x683.jpg"
        },
        "post-thumbnail": {
          "file": "balloons-825x510.jpg",
          "width": 825,
          "height": 510,
          "mime-type": "image/jpeg",
          "source_url": "http://api.example.com/wp-content/uploads/2015/09/balloons-825x510.jpg"
        }
      },
      "image_meta": {
        "aperture": 6.3,
        "credit": "",
        "camera": "Canon EOS 5D Mark III",
        "caption": "",
        "created_timestamp": 1433110262,
        "copyright": "",
        "focal_length": "50",
        "iso": "100",
        "shutter_speed": "0.004",
        "title": "",
        "orientation": 1
      }
    },
    "post": null,
    "source_url": "http://api.example.com/wp-content/uploads/2015/09/balloons.jpg"
},

The format of the response is nearly identical to what you would get sending a request to /wp-json/wp/v2/media/13 or using ?_embed. When no featured image has been set on the post the better_featured_image field will have a value of null.

I’ve done some basic performance tests that indicate the difference in response times with and without this plugin to be about 10-15ms for a collection of 10 posts and 0-5ms for a single post. For me this is much faster than making a second request to /media/, especially for multiple posts.

As of version 1.1.0, there is a filter better_rest_api_featured_image that allows you to add custom data to the better_featured_image field. The filter is directly on the return value of the function that returns the better_featured_image field. This can be used to do things like add custom image meta or an SVG version of the image to the response. Here’s an example of how you might use it:

add_filter( 'better_rest_api_featured_image', 'xxx_modify_rest_api_featured_image', 10, 2 );
/**
 * Modify the Better REST API Featured Image response.
 *
 * @param   array  $featured_image  The array of image data.
 * @param   int    $image_id        The image ID.
 *
 * @return  array                   The modified image data.
 */
function xxx_modify_rest_api_featured_image( $featured_image, $image_id ) {

  // Add an extra_data_string field with a string value.
  $featured_image['extra_data_string'] = 'A custom value.';

  // Add an extra_data_array field with an array value.
  $featured_image['extra_data_array'] = array(
    'custom_key' => 'A custom value.',
  );

  return $featured_image;
}

This plugin is on on Github and pull requests are always welcome. 🙂

Read the full description on the official page →

Tagged as

Alternatives

Other plugins for integrating services.

LocoAI

LocoAI

89

LocoAI - Auto Translate For Loco Translate is a powerful tool for developers looking to quickly translate thei...

Free 70k+ installs 4.9★ (637)
Uncanny Automator

The AI + Automation plugin for WordPress. Automate workflows across all your plugins and apps, add an AI agent...

Free 40k+ installs 4.9★ (156)
Open User Map

Create custom interactive maps with free Leaflet-based styles, no Google Maps API key, frontend marker submiss...

Free 10k+ installs 5★ (67)
Activity Log

Monitor every change on your WordPress site — who did what, when, and where it came from — for a complete audi...

Free 200k+ installs 4.3★ (74)
Reviews Feed

No API key required. Display Yelp and Google reviews for any business in a clean, customizable feed on your si...

Free 100k+ installs 4.4★ (34)
Bit integrations

Contact Form, Google Sheet, MailChimp, Brevo, Webhook, Zoho CRM Automation and Integration plugin that Connect...

Free 20k+ installs 4.9★ (160)