WP রেস্ট এপিআই - বৈশিষ্ট্যযুক্ত চিত্রটি কীভাবে পাবেন


24

আমি এই এপিআইতে খুব নতুন, আসলে আমি এখনও পর্যন্ত এটিতে কয়েক ঘন্টা ব্যয় করেছি। আমি আমার গবেষণা করেছি কিন্তু এটি সম্পর্কে কিছুই খুঁজে পাচ্ছি না ...

বিষয়টি হ'ল, আমি কোনও পোস্টের বৈশিষ্ট্যযুক্ত চিত্রটি পেয়ে যাব বলে মনে হচ্ছে না। জেএসএন ফিরে আসে "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 যুক্ত করে।


ধন্যবাদ. ইউআরএলটি কার্যকর যা ফিরিয়ে দেয়। কোনও ধারণাগুলি কেন এটি নিজেই প্লাগইনটি ফিরিয়ে দিচ্ছে না? আমি কি কিছু ভুল করছি বা এটি এপিআই?
আবদুল সাদিক ইয়ালসিন

1
এটির এপিআই। এখনও প্রথম দিন। এটি উন্নতি করবে
মাইকেল ক্রপার

1
সমস্যা সমাধান! এটি আসলে চিত্রটির একটি আইডি ফিরিয়ে দেয় তবে আমি সম্পূর্ণরূপে ভুলে গিয়েছিলাম আমি ক্যাশে চালু করে দিয়েছি! তবে যাইহোক, প্লাগইনটি আরও ভাল কারণ এটি সরাসরি ইউআরএল ফেরত দেয়।
আব্দুল সাদিক ইয়ালসিন

@ ডেভরিম খুশী আপনি এটি সমাধান করেছেন! মাইকেল এর এই উত্তরটি যদি আপনাকে সহায়তা করে তবে আপনি এটির বাম দিকের টিকটি ক্লিক করে এটি গ্রহণ করতে অন্যকে দেখান যে এটি সঠিক উত্তর। :)
টিম ম্যালোন

61

_embedআপনার ক্যোয়ারিতে পরম হিসাবে যোগ করে আপনি এটি প্লাগইন ছাড়াই পেতে পারেন

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

এটি একটি কৌণিক বাঁধাইয়ের সাথে আবদ্ধ হওয়ার পরে একটি সমস্যার কারণ wp:হয়ে থাকে, ইমেজটির জেসন পাথের কোনও নোডের নামে করুন। আমি অন্য উত্তর থেকে প্লাগইনটি ব্যবহার করেছি, যা চিত্রটির পথ সহজ করে।
স্টিভ

1
কনস: জেএসওএন ভারী পেশাদারগুলি পান: প্লাগইন ইনস্টল করবেন না, অন্য কোনও http অনুরোধটি কল করবেন না -> আপভোট করুন
থো ভো

1
কীভাবে ডাব্লুপিপি: বৈশিষ্ট্যযুক্ত মিডিয়াটি জেএসএনে রূপান্তর করা উচিত? প্রথমে আমি ডব্লিউপি ক্লাস তৈরি করি যাতে বৈশিষ্ট্যযুক্ত মিডিয়া থাকে। কিন্তু এটা কাজ করে না।
কেনজি

2
আপনি wp অ্যাক্সেস করতে পারেন: এই স্বরলিপি পোস্ট ব্যবহার করে post_ এম্বেড ['wp: টার্ম']
ocajian

11

আমি আরও ভাল বাকি এপিআই প্লাগইন ব্যবহার করব না। এটি অন্যান্য এপিআইতে বৈশিষ্ট্যযুক্ত চিত্রগুলি যুক্ত করেছিল তবে এটি এটি ভেঙে দিয়েছে।

এটি হ'ল সহজ সমাধান যা আমি খুঁজে পেয়েছি যা বাস্তবে কাজ করেছে। আপনার ফাংশন.এফপিতে নিম্নলিখিত কোডটি যুক্ত করুন:

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

আমি আমার চিত্রটিকে সরাসরি এপিআই প্রতিক্রিয়াতে যুক্ত করে একটি শর্টকাট তৈরি করেছি।


//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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.