REST এপিআই দিয়ে মিডিয়া আপলোড হচ্ছে


9

JSON REST এপিআই দিয়ে ওয়ার্ডপ্রেস সাইটে মিডিয়া আপলোড করার সময় আমার সমস্যা হচ্ছে।

নিম্নলিখিত কোড সহ আমি ফটো আপলোড করতে পারি, তবে কোনও তথ্য তাদের কাছে বরাদ্দ করা হয় না, এমনকি নামও নয় - আসলে নামটি স্বয়ংক্রিয়ভাবে URL এবং ফাইলের নাম হয়ে যায় (এক্সটেনশন ছাড়াই)।

$username = "ZX";
$password = "ZX";
$host = 'http://ZX.com/wp-json/wp/v2/media';
$data = json_encode($data);
$file = '/Users/xx.png';
$imagedata  = file_get_contents($file);
$process = curl_init($host); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($process, CURLOPT_TIMEOUT, 50);
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_POSTFIELDS, $data);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type:image/png','Content-Disposition:attachment;filename='.$file));
$return = curl_exec($process);
print_r($return);

আমি কীভাবে নীচের মতো ডেটাগুলি আপলোডগুলিতে বরাদ্দ করব?

$data = array(
  "status" => "draft",
  "title" => "Photo media",       
  "description" => "Photo media1",
  "media_type" => "image",
  "alt_text" => "alternate text"
  );

উত্তর:


3

এটি API এর মাধ্যমে সম্ভব নয়; আপনি প্রয়োজন ইমেজ নিজেকে আনা , এবং API- এ তথ্য পাঠাতে নিজেকে। ব্লককোট

- এটি @ ড্যান (মুছে ফেলা) উত্তরে উল্লিখিত গিটহাব – ইস্যুতে রায়ানকে উদ্ধৃতি দিয়েছে।

পার্শ্ব লোড ইমেজ

মনে রাখবেন যে media_sideload_image()রিটার্ন মানটিও উদাহরণ হতে পারে \WP_Error। তারপরে আপনাকে কেবল একটি পোস্টের সাথে এটি সংযুক্ত করতে হবে, যা বেশ সহজ:

$media = media_sideload_image( 
    'http://i.imgur.com/bcJvAj0.jpg', 
    $post->ID, 
    'Some image description', 
    'src'
);

if ( ! empty( $media ) and ! is_wp_error( $media ) ) {
    // reference new image to set as featured
    $attachments = get_posts( [
        'post_type'      => 'attachment',
        'posts_per_page' => 1,
        'post_status'    => 'any',
        'post_parent'    => $post->ID,
    ] );

    if ( is_array( $attachments ) ) {
        set_post_thumbnail( $post->ID, $attachments[0]->ID );
    }

    // Test print our image. The return value is the src of the sideloaded image.
    printf( '<img src="%s" />', $media );
}

অভ্যন্তরীণ

মূলটির মাধ্যমে একটি সংক্ষিপ্ত পিছনের ট্রেস যা আপনাকে এপিআইয়ের সাথে কেন আটকে থাকবে তা ব্যাখ্যা করে:

media_sideload_image()এটি download_url()অভ্যন্তরীণভাবে যা ব্যবহার করে wp_safe_remote_get(), এর জন্য একটি মোড়ক ব্যবহার করে তার উত্সটি একবার দেখুন \WP_HTTP::get()। এর অর্থ এটি বেশ নিরাপদ, ডিবাজিযোগ্য এবং সহজেই ব্যবহারযোগ্য হয়ে ওঠার সময় পুরো ডাব্লুপিআই এপিআই সরবরাহ করে। এর রিটার্ন মান download_url()হ'ল ফলাফল wp_tempnam(), যা সমস্ত সম্ভাব্য /tmpঅবস্থানগুলি অ্যাকাউন্টে গ্রহণ করে (প্রচুর পরিমাণে রয়েছে) এবং নিশ্চিত করে তোলে যে আপনার অবস্থানটি লিখিতযোগ্য । এটি media_handle_sideload()সমস্ত প্রয়োজনীয় সংযুক্তি ডেটা এবং মেটা ডেটা উত্পন্ন করবে।


কোনটি উদ্ধৃত প্রশ্ন? এই পদ্ধতিটি কি এখনও বৈধ?
ব্রেথ্লোজ

আপডেট এবং গিটহাব – উদ্ধৃতিতে ইস্যু লিঙ্কটি দেখুন। এবং কেন এটি বৈধ হবে না? আপনি যদি আবার যাচাই করতে চান তবে কেবল ইন্টার্নালের লাইনের সাথে খরগোশের গর্তটি অনুসরণ করুন এবং এখানে লিঙ্কযুক্ত কোডের সাথে বর্তমান ডাব্লুপি – সংস্করণটির তুলনা করুন। এটা যে কঠিন না।
কায়সার

কারণ এই উত্তর 2016. থেকে আমি শুধু নিশ্চিত করুন যে 2019 এর হিসাবে, বাকি এপিআই মধ্যে ফাইলগুলি আপলোড হচ্ছে মোকাবেলা করতে পারবেন না করতে চাই mediaবস্তু, অত: পর এক ডাব্লু ফাংশন উপর ফোকাস করতে পারেন।
ব্রেথ্লোজে

আমি যেমনটি বলেছিলাম ব্র্যাথ্লোজে: দয়া করে কোর কোডের চারপাশে নিজেকে দেখুন। আমি এখন ডাব্লুপিপি-র সাথে খুব বেশি কাজ করছি না বলে সেই বিষয়ে আমার কাছে নতুন কোনও তথ্য নেই।
কায়সার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.