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:
Toute aide serait appréciée.
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.
Vous pouvez l'obtenir sans plugins en ajoutant _embed
as param à votre requête
/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
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 );
?>
Vous pouvez obtenir le nom de l'image avec ce chemin:
array_name._embedded ['wp: Featuredmedia'] ['0']. source_url
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;
}