प्रोग्रामेटिक रूप से URL द्वारा चित्र प्राप्त करें और अपलोड फ़ोल्डर में सहेजें


14

मैं एक और सीएमएस से वर्डप्रेस में एक बड़े प्रवास में शामिल हूं। हमारे पास डेटाबेस की एक प्रति है और इस बात पर काम किया है कि सामग्री को कैसे निकाला जाए और wpdbकक्षा की तात्कालिकता का उपयोग करके प्रोग्राम वर्डप्रेस को इससे बनाया जाए ।

हालाँकि, कुछ हज़ार छवियां हैं जिन्हें हम स्वचालित रूप से खींचना चाहते हैं, विभिन्न आकारों को उत्पन्न करते हैं, और फिर एक सप्ताह के काम को बचाने के लिए पदों से जुड़ जाते हैं!

क्या कोई ऐसा तरीका है जिससे मैं URL द्वारा किसी दूरस्थ साइट से एक छवि प्राप्त कर सकता हूं और अपने wp-uploads फ़ोल्डर में सहेज सकता हूं? मुझे लगता है कि यह उपयोग करता है wp_httpलेकिन मैं इससे अपरिचित हूं।

एक बार जब मुझे छवि मिल गई है और इसे सहेज लिया है तो मैं ठीक हूं क्योंकि मैं wp_generate_attachment_metadataविभिन्न आकारों को बनाने के लिए उपयोग कर सकता हूं और wp_insert_attachmentइसे एक पोस्ट में संलग्न कर सकता हूं ।

धन्यवाद साइमन

जवाबों:


29

वास्तव में एक महान कार्य है जो आपके लिए उन तीन चीजों को करेगा:

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

पहला तर्क उस छवि का दूरस्थ url है जिसे आप डाउनलोड करना चाहते हैं। दूसरा तर्क पोस्ट की पोस्ट आईडी है जिससे आप छवि संलग्न करना चाहते हैं। तीसरा तर्क वैकल्पिक है, लेकिन इसमें शामिल होने पर एक विवरण होगा।

मैं सुझाव देता हूं कि आप डाउनलोड को थ्रॉटल करने का एक तरीका खोजें, ताकि आप समय बाहर न रखें, जैसे कि प्रति लोड में खींची गई छवियों की संख्या को सीमित करना और डाउनलोड के बीच खुद को ताज़ा करने के लिए आयातक को स्थापित करना, या उन्हें करने के लिए AJAX का उपयोग करना। अतुल्यकालिक रूप से।


1
यह बिल्कुल शानदार जॉन है, आपको बहुत धन्यवाद - यह पूरी तरह से काम करता है। थ्रॉटलिंग एक मुद्दा नहीं है क्योंकि मैंने इसे प्रत्येक पोस्ट आयात के बाद एक कुंजीपट के लिए प्रतीक्षा करने के लिए सेट किया है ताकि हमें मैन्युअल रूप से विवरणों की जांच करने और किसी भी समस्याग्रस्त लोगों को नोट करने का मौका मिल सके।
साइमन ब्लैकबोरन

1
सिर्फ इसलिए कि मुझे किसी अन्य पोस्ट से जुड़े होने के लिए अटैचमेंट की आईडी की आवश्यकता थी, यहां एक अच्छा तरीका है
एक्सल

3

जॉन का उत्तर फिर से सही है: उपयोग करना media_sideload_image, ध्यान दें कि आपको WP स्क्रिप्ट के संदर्भ में ऐसा करने से पहले इन लिपियों की आवश्यकता हो सकती है:

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_Reference/media_sideload_image#Notes देखें

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