web-dev-qa-db-fra.com

WP Rest API - Comment obtenir une image en vedette

Je suis très nouveau dans cette API, en fait je n'y ai passé que quelques heures jusqu'à présent. J'ai fait mes recherches mais je ne trouve rien à ce sujet ...

Le problème est que je n'arrive pas à obtenir l'image d'un article en vedette. 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 placé une image en vedette sur le message, mais les données sont renvoyées:

 featured media? 

Toute aide serait appréciée.

21
Abdul Sadik Yalcin

Jetez un coup d'oeil à un plugin appelé Better REST API Featured Image . Il ajoute l'URL de l'image sélectionnée à la réponse de l'API d'origine.

1
Michael Cropper

Vous pouvez l'obtenir sans plugins en ajoutant _embedas param à votre requête

/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
56
Eslam Mahmoud

Je ne voudrais pas utiliser le meilleur plugin API. Il a ajouté des images en vedette à l'api de repos, mais il l'a également cassé.

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

?>
8
Null TX

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

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

4
RobK

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;
}
1
vars