Cómo obtener la imagen descadada de WordPress usando la API

PHPWordPress

En este breve tutorial veremos cómo puedes agregar la URL de la imagen destacada de WordPress a los posts que obtengas mediante la API.

En ocasiones podrías necesitar obtener los posts de WordPress usando la API REST para luego mostrarlos en otra web. Sin embargo, la API de WordPress no incluirá la imagen destacada de los posts. Si bien puedes incluir la imagen usando algún plugin como este, a continuación veremos cómo hacerlo sin tener que recurrir a este recurso.

Usa la función register_rest_field

Vamos a crear una función que podrás agregar al archivo functions.php, aunque también podrás crear un plugin y agregar la función en su interior.

Debes agregar las siguientes funciones al archivo:

add_action('rest_api_init', 'agregarImagenDestacadaREST' );
function agregarImagenDestacadaREST()
{
  register_rest_field( ['post'],
      'thumbnail',
      [
        'get_callback'    => 'obtenerImagenDestacada',
        'update_callback' => null,
        'schema'          => null,
      ]
  );
}
function obtenerImagenDestacada($object, $field_name, $request)
{
  if (!$object['featured_media']) return false;
  $img = wp_get_attachment_image_src($object['featured_media'], 'app-thumb' );
  return $img[0];
}

Lo que hemos hecho es crear una función que obtenga la URL de la imagen destacada de un post, a la que hemos llamado obtenerImagenDestacada. Para ello hemos usado la función wp_get_attachment_image_src. Puedes consutlar más información acerca de esta función aquí.

También hemos agregado una acción al evento rest_api_init de WordPeess, ejecutando la función agregarImagenDestacadaREST. Esta función registrará un nuevo campo al que hemos llamado thumbnail mediante la función register_rest_field.

La función register_rest_field acepta como primer argumento un array con los tipos de elementos a los que agregaremos la imagen destacada, que en este caso solamente es el tipo post. Como segundo argumento hemos pasado el parámetro thumbnail, ya que es el nombre que tendrá el campo, aunque puedes escoger cualquier otro nombre. Finalmente hemos especificado como callback la función que obtendrá la imagen destacada del post, por lo que hemos indicado la función obtenerImagenDestacada.

Si ahora llamas al endpoint http://dominio.tld/wp-json/wp/v2/posts desde tu navegador, verás que ahora los posts incluyen el campo thumbnail con la imagen destacada.

Usa la opción _embed

Existe también otro método mucho más sencillo para obtener la imagen destacada de WordPress sin la necesidad de agregar campos. Para ello basta con agregar el valor GET _embed al final del endpoint de la API:

http://dominio.tld/wp-json/wp/v2/posts?_embed

Esto agregará todos los tamaños de imagen destacada que WordPress haya almacenado. Si ahora accedes al endpoint anterior, podrás encontrar la imagen destacada en el interior del campo _embedded.wp:featuredmedia[0].source_url de cada post.

Esto ha sido todo.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”