webentwicklung-frage-antwort-db.com.de

WP Rest API - So erhalten Sie ein vorgestellten Bild

Ich bin sehr neu in dieser API, tatsächlich habe ich bisher nur ein paar Stunden damit verbracht. Ich habe meine Nachforschungen angestellt, kann aber nichts dazu finden ...

Das Problem ist, ich kann nicht scheinen, das gekennzeichnete Bild eines Pfostens zu erhalten. Der JSON gibt "featured_media: 0" zurück.

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);
    }  
  });
}

Ich habe definitiv ein ausgewähltes Bild auf dem Post gesetzt, aber die Daten kommen zurück:

 featured media? 

Jede Hilfe wird geschätzt.

21

Schauen Sie sich ein Plugin namens Better REST API Featured Image an. Die URL des vorgestellten Bilds wird zur ursprünglichen API-Antwort hinzugefügt.

1
Michael Cropper

Sie können es ohne Plugins erhalten, indem Sie _embedas param zu Ihrer Abfrage hinzufügen

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

Ich würde NICHT das bessere Rest-API-Plugin verwenden. Es hat dem Rest der API vorgestellte Bilder hinzugefügt, aber es hat es auch kaputt gemacht.

Dies ist die einfachste Lösung, die ich finden konnte und die tatsächlich funktioniert hat. Füge den folgenden Code zu deiner functions.php hinzu:

<?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

Sie können den Namen des Bildes mit diesem Pfad erhalten:

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

4
RobK

Ich habe eine Verknüpfung zu meinem Bild erstellt, indem ich sie direkt zur API-Antwort hinzugefügt habe.


//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