WP Rest API - Como obter uma imagem em destaque

15

Sou muito novo nesta API, na verdade, passei apenas algumas horas até agora. Eu fiz minha pesquisa, mas não consigo encontrar nada sobre isso ...

A questão é que não consigo obter a imagem de destaque de um post. O JSON retorna "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, defini uma imagem em destaque na postagem, mas os dados retornam:

Qualquer ajuda será apreciada.

    
por Abdul Sadik Yalcin 30.06.2016 / 22:58

5 respostas

1

Dê uma olhada no plug-in chamado Imagem em destaque da API REST melhor . Adiciona o URL da imagem em destaque à resposta original da API.

    
por Michael Cropper 30.06.2016 / 23:02
41

Você pode obtê-lo sem plugins adicionando _embed como param à sua consulta

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

Você pode obter o nome da imagem com este caminho:

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

    
por RobK 31.01.2018 / 18:16
2

Eu NÃO usaria o plugin de melhor descanso da API. Ele adicionou imagens em destaque ao api restante, mas também quebrou.

Esta é a solução mais simples que eu pude achar que realmente funcionou. Adicione o seguinte código ao seu functions.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 );

?>
    
por Null TX 22.10.2018 / 22:09
0

Eu criei um atalho para minha imagem adicionando-o diretamente à resposta da 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;
}
    
por vars 29.09.2018 / 00:16