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.