WP आराम एपीआई - कैसे चित्रित छवि पाने के लिए


24

मैं इस API के लिए बहुत नया हूं, वास्तव में मैंने इस पर अब तक केवल दो घंटे बिताए हैं। मैंने अपना शोध किया है, लेकिन इसके बारे में कुछ भी नहीं पा सकता ...

मुद्दा यह है, मैं किसी पोस्ट की चित्रित छवि प्राप्त नहीं कर सकता। JSON देता है "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);
    }  
  });
}

मैंने निश्चित रूप से, पोस्ट पर एक विशेष छवि सेट की है, लेकिन डेटा रिटर्न:

मीडिया को चित्रित किया?

किसी भी तरह की सहायता को आभार समझेंगे।

जवाबों:


1

बेहतर REST API फीचर्ड इमेज नामक प्लगइन पर एक नज़र डालें । यह चुनिंदा छवि URL को मूल API प्रतिक्रिया में जोड़ता है।


धन्यवाद। वह URL लौटाता है जो आसान है। किसी भी विचार क्यों प्लगइन यह स्व इसे वापस नहीं है? क्या मैं कुछ गलत कर रहा हूं या क्या यह एपीआई है?
अब्दुल सादिक यालसिन

1
इसकी एपीआई। अभी भी शुरुआती दिन हैं। इसमें सुधार होगा
माइकल क्रॉपर

1
समस्या सुलझ गयी! यह वास्तव में छवि की एक आईडी लौटाता है, लेकिन मैं पूरी तरह से भूल गया था कि मैंने कैश चालू किया था! लेकिन वैसे भी, यह प्लगइन बेहतर है क्योंकि यह url को सीधे लौटाता है।
अब्दुल सादिक यालसिन

@Devrim खुशी है कि आप इसे हल! यदि माइकल के इस जवाब से आपको मदद मिली, तो आप इसे दूसरों को दिखाने के लिए स्वीकार करने के लिए बाईं ओर टिक पर क्लिक कर सकते हैं कि यह सही उत्तर था। :)
टिम मेलोन

61

आप इसे _embedअपनी क्वेरी में परम के रूप में जोड़कर प्लगइन्स के बिना प्राप्त कर सकते हैं

/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed

यह एक समस्या का कारण बनता है जब इसे एक कोणीय बंधन wp:में बांधते हैं, छवि के लिए json पथ में से एक नोड के नाम पर करते हैं। मैंने दूसरे उत्तर से प्लगइन का उपयोग किया, जो छवि के लिए मार्ग को सरल करता है।
स्टीव

1
विपक्ष: JSON को बहुत भारी लाभ मिलता है: प्लगइन स्थापित न करें, किसी अन्य http अनुरोध को कॉल न करें -> upvote
Tho Vo

1
Wp को कैसे बदलना चाहिए: फीमेलिया को JSON में? पहले मैंने wp क्लास बनाई जिसमें फीमेलिया शामिल है। लेकिन यह काम नहीं करता है।
केनजी

2
आप wp तक पहुँच सकते हैं: इस संकेतन पोस्ट का उपयोग करके ।_embedded ['wp: term']
ओजियन

11

मैं बेहतर बाकी एपीआई प्लगइन का उपयोग नहीं करेगा। इसने बाकी एपीआई में चित्रित चित्र जोड़े लेकिन इसने इसे भी तोड़ दिया।

यह सबसे सरल समाधान है जो मैं वास्तव में काम करने में सक्षम था। निम्नलिखित कोड को अपने 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 );

?>

4

आप इस पथ के साथ छवि का नाम प्राप्त कर सकते हैं:

array_name._embedded [ 'WP: featuredmedia']। [ '0'] SOURCE_URL


1

मैंने इसे सीधे 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;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.