मैं छवियों को कैसे अपलोड कर सकता हूं और एक ही समय में प्रत्येक के लिए स्वचालित रूप से पोस्ट बना सकता हूं?


10

मुझे पता है कि एक मौजूदा पोस्ट में कई छवियों को कैसे अपलोड करना है, लेकिन यह एक अलग परिदृश्य है। यह संपत्ति की एक बड़ी सूची के लिए है, प्रत्येक कस्टम पोस्ट-प्रकार के बाद एक छवि संपत्ति का प्रतिनिधित्व करता है (इस प्रकार एक छवि को प्रत्येक पोस्ट के लिए "चित्रित छवि" के रूप में सौंपा गया है)।

संपूर्ण प्रणाली एक बार के परिसंपत्ति निर्माण के लिए बहुत अच्छा काम करती है, लेकिन बहुत समय लेने वाली होती है। मुझे एक साथ कई छवियों को "बैच" अपलोड करने में सक्षम होने की आवश्यकता है, फिर प्रत्येक छवि के लिए एक नया पोस्ट बनाया गया है, फिर छवि को "चित्रित छवि" के रूप में नई पोस्ट में संलग्न करें।

प्रत्येक पोस्ट के लिए कोई पाठ सामग्री दर्ज नहीं की जाएगी - बस कुछ मेटाडेटा और कस्टम टैक्सोनॉमी असाइनमेंट, इसलिए इस बैच निर्माण प्रक्रिया के दौरान मेटाडाटा और टैक्सोनॉमी को बैच-असाइन करना संभव होना चाहिए।

मैंने XML-RPC पोस्ट निर्माण से समाधानों पर शोध किया है (जो आमतौर पर इमेज अपलोड / असाइनमेंट को हैंडल नहीं करता है) प्लगइन्स को सर्वर डायरेक्टरी से मीडिया लाइब्रेरी में फाइल खींचते हैं (जो पोस्ट निर्माण को कवर नहीं करता है), और कई फाइल को jquery करता है। अपलोडर (जो मूल रूप से केवल एक डायरेक्टरी में फाइल डंप करते हैं)।

मैं अपेक्षाकृत php में निपुण हूँ, निर्मित प्लगइन्स और थीम के साथ, लेकिन मैं इस प्रक्रिया को संभालने के तरीके से रुका हुआ हूँ, क्योंकि इसमें कुछ अस्थायी क्षमता में सर्वर पर फ़ाइलों को प्राप्त करने के पहले चरण की आवश्यकता होती है, फिर फ़ाइलों के आधार पर पोस्ट जनरेट करना पूरे बैच में कुछ पहचान वाले मेटाडेटा अपलोड और अपलोड किए जा रहे हैं।

मुझे उम्मीद है कि यह एक कस्टम व्यवस्थापक पैनल में हो सकता है, लेकिन अगर मुझे wp-admin के बाहर ऐसा करना है, तो यह ठीक है ...

विचार?


क्या आपको कभी इसका जवाब मिला? यह मेरे लिए बिल्कुल सही होगा ...

मैंने किया था ... लेकिन परिदृश्य परियोजना के लिए एक संपूर्ण रूपरेखा प्लगइन में विकसित हुआ। यह एक विशेष संक्षिप्त जवाब नहीं है - मुझे कई कार्यों और हुक के प्रवाह का दस्तावेजीकरण करना होगा जो सभी मिलकर इसे पूरा करते हैं।
दैहिक

1
सारांश में, मैंने वास्तव में एक दो-चरणीय प्रक्रिया बनाई, क्योंकि संपादकीय कारणों से यह वास्तव में किसी उपयोगकर्ता द्वारा अपलोड की गई सभी चीज़ों के लिए स्पॉन पोस्ट करने के लिए समझ में नहीं आया। इसके बजाय, उपयोगकर्ता एक ही "बैच" पोस्ट पर सभी छवियों को उस एकल पोस्ट पर संलग्नक के रूप में अपलोड करता है । फिर, बैच की समीक्षा की जाती है और प्रत्येक अनुलग्नक को स्वीकार / अस्वीकार कर दिया जाता है - और एक बार "बैच" पोस्ट प्रकाशित होने के बाद, एक कस्टम सेव रूटीन प्रत्येक स्वीकृत अनुलग्नक को लेता है और wp_insert_post () का उपयोग करके एक पोस्ट बनाता है, जिसमें केवल एक अनुलग्नक के रूप में चित्रित किया गया हो छवि।
दैहिक

इसके अलावा एक डुप्लिकेट: wordpress.stackexchange.com/questions/55616/...
अनूप चंद्रिका HarisudhanNair

आप मेटा डेटा कैसे जोड़ रहे हैं, चित्र डेटा से कैसे संबंधित हैं?
व्येक

जवाबों:


5

इस प्लगइन है: स्वचालित विशेष रुप से प्रदर्शित छवि पोस्ट प्लगइन

प्लगइन पेज से:

स्वचालित रूप से प्रदर्शित छवि पोस्ट, हर बार एक छवि अपलोड होने के बाद विशेष रुप से प्रदर्शित छवि के साथ एक नया पोस्ट बनाती है। प्लगइन सेटिंग्स पृष्ठ के माध्यम से, आप अपने स्वयं के अन्य मौजूदा कस्टम पोस्ट प्रकारों और / या पोस्ट प्रारूपों में से एक को प्रकाशित करने और असाइन करने के लिए छवि सेट कर सकते हैं।

मूल रूप से, अपलोड की गई प्रत्येक छवि एक पोस्ट (आपके चुने हुए पोस्ट-प्रकार का) उत्पन्न करती है और उस पोस्ट की चित्रित छवि के रूप में सेट की जाती है।

मैंने इसे अपनी स्थानीय मशीन पर स्थापित किया। सेटिंग्स पृष्ठ इस तरह दिखता है और आपको यह चुनने की अनुमति देता है कि कौन सी पोस्ट प्रकार, कस्टम पोस्ट प्रकार सहित, आप फ़ोटो अपलोड असाइन करना चाहते हैं, और आप क्या प्रकाशित स्थिति चाहते हैं।

प्लगइन का स्क्रीनशॉट

प्लगइन को व्यवहार में लाने के लिए - अपने चुने हुए पोस्ट प्रकार पर नेविगेट करें, एक नया पोस्ट खोलें और मीडिया अपलोड करें।

फ़ोटो अपलोड करने के लिए, बस "अपलोड" संवाद बॉक्स में कई फ़ोटो हाइलाइट करें। मैं यहाँ 8 तस्वीरें उजागर कर रहा हूँ, लेकिन मुझे कोई कारण नहीं दिखता कि यह 80 या 800 क्यों नहीं हो सकता है, जब तक कि कोई सीमा नहीं है जब तक मैं वर्डप्रेस इमेज अपलोडर के बारे में नहीं जानता।

यहाँ छवि विवरण दर्ज करें

पदों के शीर्षक छवि फ़ाइल नामों से निर्धारित होते हैं। आपको उसके साथ काम करने में सक्षम होना चाहिए और उन्हें अपने विषय में कॉल करना चाहिएthe_title()

मैंने स्थानीय रूप से परीक्षण किया और यह वर्डप्रेस 3.6 में काम कर रहा है।

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

यदि आपको गतिशील रूप से पोस्ट की गई सामग्री की आवश्यकता है, तो आप कम से कम प्लगइन और वहाँ से शुरू कर सकते हैं। एक विचार था कि पोस्ट कैसे प्रदर्शित की जाती हैं, यह निर्धारित करने के लिए पोस्ट-फॉर्मेट या पेज-टेम्प्लेट का उपयोग करना होगा।

नोट: सुनिश्चित करें कि आपके पास image_sizeफ़ंक्शन में सभी सेट हैं। मुझे १०,००० फ़ोटो को पूर्ववत / हटाने के लिए, या एक बहुत लंबे "पुनर्जीवित थंबनेल" चलाने के लिए नफरत है क्योंकि मैं छवि का आकार भूल गया या बदल गया!


आपको टिप्पणी करनी चाहिए जब आप डाउनवोट करते हैं - यह साइट की गुणवत्ता में सुधार करने के लिए बहुत अधिक उपयोगी होगा।
टाइमशूट्स

5

यह स्क्रिप्ट अवधारणा का प्रमाण है (परीक्षण और काम), यह एक प्लगइन नहीं है और इसका मतलब हैक किया जाना है, यह कुछ चीजों को मानता है:

  1. यह उपयोग करता है wp_insert_postइसलिए यह सलाह दी जाती है कि आप इसे किसी भी प्रशासनिक हुक में न डालें, इसलिए इसे एक बार चलाएं!
  2. छवियों को wp-content\uploadsफ़ोल्डर में होना चाहिए , इसे बदलने से अधिक हूप के माध्यम से कूदना होगा। उदाहरण \imagesअपलोड फ़ोल्डर में कस्टम फ़ोल्डर का उपयोग करता है , आप इस हिस्से को बदल सकते हैं।
  3. यह किसी भी त्रुटि की जाँच नहीं करता है, मैंने केवल 20 छवियों वाले फ़ोल्डर पर इसका परीक्षण किया है ताकि परिणाम भिन्न हो सकते हैं :)

नीचे दिए गए कोड को wp-content\uploads\imagesफ़ोल्डर के माध्यम से पुनरावृत्त किया जाएगा और छवि के नाम के आधार पर एक पोस्ट शीर्षक बनाया जाएगा। आप शायद इसे अपने पास मौजूद डेटा (एक्जिफ़ शायद) का उपयोग करके मेटा डेटा में कुछ बेहतर या संभव दर्ज करना चाहते हैं।

function WPSE_1595_image_post() {

    // We need to use the default uploads dir
    $wp_upload_dir =  wp_upload_dir();
    // The actual folder
    $wp_upload_images = $wp_upload_dir['basedir'] . '/images';

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

    foreach (new DirectoryIterator($wp_upload_images) as $fileInfo) {

        if($fileInfo->isDot()) continue;

        $image_base = $fileInfo->getFilename();
        $image_name = pathinfo($fileInfo, PATHINFO_FILENAME);

        //Customize this post data as you wish
        $my_post_data = array(
            'post_title' => $image_name,
            'post_type' => 'post',
            'post_category' => array('1'),
            'post_author'   => 1,
            'post_status' => 'publish'
        );

        // We need the ID for the attachment
        $post_id = wp_insert_post($my_post_data);

        $wp_filetype = wp_check_filetype($image_base, null );

         //Customize this attachment data as you wish
        $attachment = array(
             'guid' => $wp_upload_dir['url'] . '/' . $image_name, 
             'post_mime_type' => $wp_filetype['type'],
             'post_title' => 'child-' . $image_name,
             'post_content' => '',
             'post_status' => 'inherit'
        );

        $imagefile = $wp_upload_images . '/' . $image_base;
        $attach_id = wp_insert_attachment( $attachment, $imagefile, $post_id );
        $attach_data = wp_generate_attachment_metadata( $attach_id, $imagefile );

        wp_update_attachment_metadata( $attach_id, $attach_data );
    }   
}

कुछ हज़ार से अधिक चित्रों के लिए आपको संभवतः एक आसान समय का उपयोग करना होगा:


यह अपलोड की गई छवियों को वापस / छवियों फ़ोल्डर में जोड़ने के लिए रखता है और उसके लिए भी, यह नई पोस्ट उत्पन्न करता है। यह प्रक्रिया पुनरावर्ती बन गई, इससे पहले कि मैं समारोह को हटाता, लगभग 800 पोस्ट बनाए गए। उत्पन्न नए आकार को नियमित wp मीडिया स्थान में किया जाना चाहिए।
हीना शाह

1

"सफाई अपलोड फ़ोल्डर, मीडिया लाइब्रेरी डाटाबेस संरचना" प्रश्न है कि संबंधित हो सकती है कुछ प्लगइन सुझाव है - यद्यपि नहीं वास्तव में कर रही आप के लिए क्या पूछना। लेकिन शायद जानकारी उपयोगी है।

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