প্রোগ্রামযুক্তভাবে URL- এর মাধ্যমে চিত্রগুলি পান এবং আপলোড ফোল্ডারে সংরক্ষণ করুন


14

আমি অন্য সিএমএস থেকে ওয়ার্ডপ্রেসে একটি বড় মাইগ্রেশনে জড়িত। আমাদের কাছে ডাটাবেসের একটি অনুলিপি রয়েছে এবং কীভাবে সামগ্রীটি বের করতে হয় এবং ক্লাসটির ইনস্ট্যান্টেশন ব্যবহার করে প্রোগ্রাম থেকে ওয়ার্ডপ্রেস পোস্টগুলি তৈরি করা যায় wpdb

তবে, কয়েক হাজার চিত্র রয়েছে যা আমরা স্বয়ংক্রিয়ভাবে টানতে চাই, বিভিন্ন মাপ তৈরি করতে পারি এবং তারপরে পোস্টগুলিতে সংযুক্ত করে প্রায় এক সপ্তাহের কাজ বাঁচাতে চাই!

আমি কি ইউআরএল দ্বারা একটি প্রত্যন্ত সাইট থেকে একটি ছবি পেতে এবং আমার wp- আপলোড ফোল্ডারে এটি সংরক্ষণ করার উপায় আছে? আমি এই ব্যবহারগুলি অনুমান করি wp_httpতবে আমি এটির সাথে অপরিচিত।

একবার আমি চিত্রটি পেয়েছি এবং এটি সংরক্ষণ করে ফেলেছি ঠিক তখনই আমি wp_generate_attachment_metadataবিভিন্ন আকার তৈরি করতে এবং wp_insert_attachmentকোনও পোস্টে এটি সংযুক্ত করতে ব্যবহার করতে পারি ।

ধন্যবাদ সাইমন

উত্তর:


29

আসলে একটি দুর্দান্ত ফাংশন রয়েছে যা আপনার জন্য এই তিনটি জিনিসই করবে:

media_sideload_image( $url, $post_id, $description );

প্রথম যুক্তি হ'ল আপনি যে চিত্রটি ডাউনলোড করতে চান তার দূরবর্তী url। দ্বিতীয় যুক্তি হ'ল আপনি যে চিত্রটি সংযুক্ত করতে চান সেই পোস্টের পোস্ট আইডি। তৃতীয় যুক্তি alচ্ছিক, তবে অন্তর্ভুক্ত করা থাকলে একটি বিবরণ হবে।

আমি ডাউনলোডগুলি থ্রোলেট করার একটি উপায় সন্ধান করার পরামর্শ দিচ্ছি যাতে আপনি সময় নির্ধারণ না করেন, যেমন প্রতি লোডে যে চিত্রগুলি সরিয়ে দেয় সেটিকে সীমাবদ্ধ করে এবং আমদানিকারককে ডাউনলোডগুলির মধ্যে নিজেকে রিফ্রেশ করার জন্য সেট করে, বা এজেএক্স ব্যবহার করে সেগুলি ব্যবহার করে একসময় অবিচ্ছিন্নভাবে।


1
এটি একেবারে চমত্কার জন, আপনাকে অনেক ধন্যবাদ - এটি পুরোপুরি কাজ করে। থ্রোটলিং কোনও সমস্যা নয় কারণ আমি প্রতিটি পোস্ট আমদানির পরে কীপ্রেসের জন্য অপেক্ষা করার জন্য সেট করেছিলাম যাতে আমাদের ম্যানুয়ালি বিশদটি পরীক্ষা করে দেখে এবং কোনও সমস্যাযুক্ত বিষয়গুলি নোট করতে পারে।
সাইমন ব্ল্যাকবর্ন

1
অন্য পোস্টের সাথে সংযুক্ত হওয়ার জন্য আমার সংযুক্তিটির আইডি দরকার ছিল বলে এটি করার একটি ভাল উপায় এখানে রয়েছে
এক্সেল

3

জন এর উত্তর সঠিক: পুনরায় ব্যবহার করে media_sideload_image, কেবল নোট করুন যে আপনি ডাব্লুপি প্রশাসনের প্রসঙ্গে যদি এটি না করে থাকেন তবে আপনাকে আগে এই স্ক্রিপ্টগুলির প্রয়োজন হতে পারে:

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

Https://codex.wordpress.org/Function_References/media_sideload_image# নোট দেখুন

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