API WP Rest - Comment obtenir une image en vedette

15

Je suis très novice dans cette API. En fait, je n’y ai consacré que quelques heures à ce jour. J'ai fait mes recherches mais je ne trouve rien à ce sujet ...

Le problème est que je n'arrive pas à obtenir l’image sélectionnée d’un message. Le JSON renvoie "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);
    }  
  });
}

J'ai définitivement défini une image en vedette sur le message, mais les données sont renvoyées:

Toute aide sera appréciée.

    
posée Abdul Sadik Yalcin 30.06.2016 - 22:58

5 réponses

1

Jetez un coup d'œil à un plugin intitulé Meilleure image sélectionnée de l'API REST . Il ajoute l'URL de l'image sélectionnée à la réponse de l'API d'origine.

    
réponse donnée Michael Cropper 30.06.2016 - 23:02
41

Vous pouvez l'obtenir sans plugins en ajoutant _embed en tant que paramètre à votre requête

/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
    
réponse donnée Eslam Mahmoud 31.05.2017 - 17:56
4

Vous pouvez obtenir le nom de l'image avec ce chemin:

nom_ array._embedded ['wp: Featuredmedia'] ['0']. source_url

    
réponse donnée RobK 31.01.2018 - 18:16
2

Je ne voudrais pas utiliser le meilleur plug-in d'API Rest. Elle a ajouté des images à l’API de repos, mais elle l’a également brisée.

C’est la solution la plus simple que j’ai pu trouver et qui a réellement fonctionné. Ajoutez le code suivant à votre fichier 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 );

?>
    
réponse donnée Null TX 22.10.2018 - 22:09
0

J'ai créé un raccourci vers mon image en l'ajoutant directement à la réponse de l'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;
}
    
réponse donnée vars 29.09.2018 - 00:16

Lire d'autres questions sur les étiquettes