WP Rest API - Cómo obtener una imagen destacada

15

Soy muy nuevo en esta API, de hecho, solo he pasado un par de horas hasta ahora. He investigado pero no puedo encontrar nada al respecto ...

El problema es que no puedo obtener la imagen destacada de una publicación. El JSON devuelve "featured_media: 0" .

getPosts: function() {
  var burl = "http://www.example.com/wp-json/wp/v2/posts";
  var dataDiv = document.getElementById('cards');
  $.ajax({
    url: burl,
    data: data,
    type: 'GET',
    async: false,
    processData: false,
    beforeSend: function (xhr) {
      if (xhr && xhr.overrideMimeType) {
        xhr.overrideMimeType('application/json;charset=utf-8');
      }
    },
    dataType: 'json',
    success: function (data) {
      console.log(data);
      //question: data->featured_image: 0?!
      var theUl = document.getElementById('cards');
      for (var key in data) {
        //data[key]['']...
        //doing my stuff here
      }
    },
    error: function(e) {
      console.log('Error: '+e);
    }  
  });
}

Definitivamente, he establecido una imagen destacada en la publicación pero los datos devuelven:

Cualquier ayuda será apreciada.

    
pregunta Abdul Sadik Yalcin 30.06.2016 - 22:58

5 respuestas

1

Eche un vistazo a un complemento llamado Mejor imagen destacada de REST API . Agrega la URL de la imagen destacada a la respuesta API original.

    
respondido por el Michael Cropper 30.06.2016 - 23:02
41

Puede obtenerlo sin complementos agregando _embed como parámetro a su consulta

/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
    
respondido por el Eslam Mahmoud 31.05.2017 - 17:56
4

Puede obtener el nombre de la imagen con esta ruta:

array_name._embedded ['wp: Featuredmedia'] ['0']. source_url

    
respondido por el RobK 31.01.2018 - 18:16
2

NO usaría el mejor API de resto. Agregó imágenes destacadas al resto de API, pero también lo rompió.

Esta es la solución más simple que pude encontrar que realmente funcionó. Agregue el siguiente código a sus funciones.php:

<?php

    function post_fetured_image_json( $data, $post, $context ) {
        $featured_image_id = $data->data['featured_media']; // get featured image id
        $featured_image_url = wp_get_attachment_image_src( $featured_image_id, 'original' ); // get url of the original size

        if( $featured_image_url ) {
            $data->data['featured_image_url'] = $featured_image_url[0];
        }

        return $data;
    }
    add_filter( 'rest_prepare_post', 'post_fetured_image_json', 10, 3 );

?>
    
respondido por el Null TX 22.10.2018 - 22:09
0

Hice un acceso directo a mi imagen agregándolo directamente a la respuesta de la API.

//Add in functions.php, this hook is for  my 'regions' post type
add_action( 'rest_api_init', 'create_api_posts_meta_field' );

function create_api_posts_meta_field() {
  register_rest_field( 'regions', 'group', array(
         'get_callback'    => 'get_post_meta_for_api',
         'schema'          => null,
      )
  );
}
//Use the post ID to query the image and add it to your payload
function get_post_meta_for_api( $object ) {
  $post_id = $object['id'];
  $post_meta = get_post_meta( $post_id );
  $post_image = get_post_thumbnail_id( $post_id );      
  $post_meta["group_image"] = wp_get_attachment_image_src($post_image)[0];

  return $post_meta;
}
    
respondido por el vars 29.09.2018 - 00:16

Lea otras preguntas en las etiquetas