वर्डप्रेस मीडिया लाइब्रेरी का भौतिक संगठन (रियल मीडिया लाइब्रेरी प्लगइन)


22

रियल मीडिया लाइब्रेरी फ़ोल्डर संरचना

परिचय।

उपरोक्त स्क्रीनशॉट में आप प्रीमियम प्लगइन रियल मीडिया लाइब्रेरी के साथ निर्मित एक फ़ोल्डर संरचना देख सकते हैं । अब मैं एक एक्सटेंशन प्लगइन बनाना चाहता हूं जो फ़ोल्डर संरचना को भौतिक फ़ोल्डर संरचना में व्यवस्थित कर सकता है - आरएमएल केवल दृश्य संरचना है।

अद्यतन # 2 (2017-01-27): उत्तर की जाँच करें!

वर्डप्रेस मीडिया लाइब्रेरी (रियल मीडिया लाइब्रेरी प्लगइन) के भौतिक संगठन पर एक नज़र डालें जहां मैंने एक मुफ्त एक्सटेंशन प्लगइन बनाया है।

अपडेट # 1 (2016-12-14): पहली सफलता: कस्टम थंबनेल अपलोड फ़ोल्डर

अब, मैंने एक और प्लगइन रियल थंबनेल जेनरेटर बनाया है , जो आपको कस्टम थंबनेल अपलोड फ़ोल्डर बनाने की अनुमति देता है। बस इस स्क्रीनशॉट पर एक नजर:

असली थंबनेल जेनरेटर अपलोड फ़ोल्डर

कस्टम थंबनेल फ़ोल्डर्स क्यों? कस्टम थंबनेल फ़ोल्डर्स को बनाए रखना आसान है, क्योंकि यहां, हमें डेटाबेस अपडेट URL को बनाए रखने की आवश्यकता नहीं है क्योंकि थंबनेल अभी भी उसी स्थान पर हैं (जो अभी भी आरएमएल एक्सटेंशन द्वारा नहीं बदला गया है)।

यदि आप कस्टम थंबनेल जनरेटर के बारे में अधिक जानना चाहते हैं, तो आप इस धागे पर एक नज़र डाल सकते हैं, जहाँ मैंने एक तकनीकी दृष्टिकोण समझाया है जो कस्टम अपलोड निर्देशिका में प्रत्येक कस्टम छवि का आकार है?

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

मूल पोस्ट

मेरा विस्तार लक्ष्य।

फिलहाल मैं फ़ोल्डर "/ असंगठित" में हूँ, इसका मतलब है कि यह फ़ोल्डर / wp-content / uploads / है। जब मैं फ़ाइल को फ़ोल्डर में ले जाता हूं (जैसा कि आप स्क्रीनशॉट में देख सकते हैं) पीडीएफ / सबडिर के लिए फ़ाइल दृश्य फ़ोल्डर में है। अब मेरा विस्तार भौतिक के लिए अलग फ़ोल्डर का पता लगाता है और एक छोटा "बटन" दिखाता है जो उपयोगकर्ता को इसे भौतिक रूप से स्थानांतरित करने की अनुमति देता है:

इसे फिजिक्स करने के लिए बटन

उपयोगकर्ता अब बटन पर क्लिक करता है "Physix it!" और फ़ाइल को /wp-content/uploads/pdfs/subdir/Another-Doc.pdf में ले जाना चाहिए । मैंने चाल प्रक्रिया पहले ही बना ली है: मैंने इस अनुलग्नक (छवियों के लिए समावेशी थंबनेल) के लिए सभी मीडिया फ़ाइलों को पढ़ा और WP फ़ंक्शन wp_mkdh_p () के साथ मिलकर php फ़ंक्शन नाम ($ old_file, $ new_file) का उपयोग किया । में GUID wp_posts मेज और में मेटा डेटा wp_postmeta बदल गया है, भी। जब सभी फाइलें चली जाती हैं, तो मैं कार्रवाई को कॉल करता हूं:

<?php
do_action('RML/Physix/Moved', $meta, $id);
// $meta = Infos about the move process, see above screenshot
// $id = The attachment ID
?>

$ मेटा एक सरणी है:

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

कुंजी "नाम" में सभी नाम बदलने की प्रक्रिया शामिल है (उदाहरण के लिए यहां छवियों के लिए थंबनेल फाइलें हो सकती हैं)।

समस्या: प्लगइन संगतता की गारंटी।

वर्डप्रेस मीडिया लाइब्रेरी की मुख्य समस्या (अगर यह है) है, कि कई प्लगइन्स अटैचमेंट आईडी के बजाय पूर्ण URL वाले चित्रों के संदर्भ को सहेजते हैं। इसका अर्थ है कि कॉलम के साथ MySQL टेबल हैं जिसमें दी गई फ़ाइल का URL है। मैं कैसे गारंटी दे सकता हूं कि सभी संदर्भ भौतिक फ़ोल्डर्स के साथ अद्यतित हैं? मुझे लगता है कि यह असंभव है।

एक संभव दृष्टिकोण।

मैं कार्रवाई में हुक करता हूं और SQL में पुनरावर्ती विवरण के साथ wp_post-> post_content , ... जैसे मानक तालिकाओं को अपडेट करता हूं

<?php    
/**
 * When a attachment is moved.
 * 
 * @hooked RML/Physix/Moved
 */
function physix_moved($meta, $id) {
    $rename = $meta["rename"];

    // Prepare array for recursive REPLACE
    $arr = array();
    foreach ($rename as $value) {
        $arr[] = array($value["old_url"], $value["new_url"]);
    }
    $rec = $this->recReplace($arr, "post_content"); // function is already finished
}
?>

$ Rec चर अब एक REPLACE- कथन है:

REPLACE(post_content, 'https://example.io/wp-content/uploads/Another-Doc.pdf', 'https://example.io/wp-content/uploads/pdfs/subdir/Another-Doc.pdf')

वैसे: सभी थंबनेल फ़ाइलों के साथ एक छवि (testimage.jpg) के लिए यह इस तरह दिख सकता है:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(post_content, 'https://example.io/wp-content/uploads/testimage-750x350.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-750x350.jpg'), 'https://example.io/wp-content/uploads/testimage-1170x855.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1170x855.jpg'), 'https://example.io/wp-content/uploads/testimage-256x187.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-256x187.jpg'), 'https://example.io/wp-content/uploads/testimage-1024x748.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-1024x748.jpg'), 'https://example.io/wp-content/uploads/testimage-300x219.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-300x219.jpg'), 'https://example.io/wp-content/uploads/testimage-150x150.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage-150x150.jpg'), 'https://example.io/wp-content/uploads/testimage.jpg', 'https://example.io/wp-content/uploads/pdfs/subdir/testimage.jpg')

लेकिन क्या होता है, अगर यह डेटाबेस टेबल में क्रमबद्ध स्ट्रिंग (JSON) है? तो ऐसा लग रहा है { "image": "http:\/\/example.io\/wp-content\/uploads\/Another-Doc.pdf" }। मुझे REPLACE- कथन में क्या जोड़ना चाहिए?

REPLACE- स्टेटमेंट का उपयोग अब सभी MySQL तालिकाओं के माध्यम से किया जा सकता है जिसमें छवि URL शामिल हैं। मैंने एक फ़िल्टर सरणी बनाने के बारे में सोचा, जहाँ प्लगइन्स अपनी टेबल जोड़ सकते हैं और मेरा एक्सटेंशन बाकी काम करता है:

<?php
$tables = apply_filters("RML/Physix/Moved/Tables", array( // TODO: use $wpdb->prefix
    "wp_posts" => array("post_excerpt", "post_content"),
    "wp_postmeta" => array("meta_value")
    //...
));
?>

"चाल" लॉग

मैं एक "लॉग" बनाना चाहता हूं जहां उपयोगकर्ता स्थानांतरित कर सकते हैं। यदि कोई उपयोगकर्ता देखता है, तो एक छवि टूट गई है (उदाहरण के लिए स्लाइडर क्रांति प्लगइन), वह मूल फ़ोल्डर में स्थानांतरित कर सकता है।

आप उस विचार के बारे में क्या सोचते हैं? क्या कोई बेहतर समाधान है? मुझे आशा है कि मैंने सभी को अच्छे तरीके से समझाया है!


9
आप फ़ोल्डर संरचना को अंतर्निहित अनुलग्नकों को देखने के लिए नहीं हैं, बहुत सारे मामलों में कोई भी नहीं है (शायद फाइलें सर्वर पर भी नहीं हैं? एस 3 एडब्ल्यूएस सीडीएन आदि), वर्डप्रेस अटैचमेंट पोस्ट्स में डील करता है, अटैचमेंट फाइल नहीं, और उन्हें सर्वर पर इधर-उधर ले जाना उल्टा है। बेहतर होगा कि तुम एक कस्टम वर्गीकरण के साथ ऐसा करने की जाएगी और नियम है कि एक रीडायरेक्ट को गति प्रदान पुनर्लेखन
टॉम जम्मू नॉवेल

5
जबकि यह स्पष्टता / गुणवत्ता (प्रयास के लिए +1) के संदर्भ में एक उत्कृष्ट प्रश्न है, अंततः हम यहां एक 3 पार्टी प्लगइन के साथ काम कर रहे हैं, जिसे ऑफ़-टॉपिक माना जाता है - मुझे नहीं लगता कि कोई भी ऐसा करने में सक्षम होगा "जल्दी" आरएमएल में गंभीरता से निवेश किए बिना आपकी मदद करता है।
TheDeadMedic

@ TheDeadMedic हाँ यह सच है। लेकिन मैंने सवाल का तरीका पूछा, कि आप जानते हैं कि यह आरएमएल में कैसे काम करता है। यह प्रश्न RML विशिष्ट नहीं है, यह अधिक डेटाबेस विशिष्ट है - url प्रतिस्थापन के साथ समस्या को कैसे हल किया जाए।
मथायस गुंटर

2
और प्रयास के लिए एक और +1 - काश हमारे पास इस तरह के प्रश्न अधिक होते ... जैसे कि हम शुरुआती दिनों में थे। वैसे भी, मुख्य समस्याएं ऊपर उल्लिखित हैं। अपनी बात बनाने के लिए: क्या आप एक संपादन दाखिल कर सकते हैं और जो आप कोशिश कर रहे हैं उसका तर्क बता सकते हैं? अभी तक उन फाइलसिस्टम कार्यों को करने का कोई मतलब नहीं है।
केसर

आप इस @ माथियास गुंटर के साथ कैसे गए? क्या आप एक समाधान खोजने में कामयाब रहे हैं?
टिम मालोन

जवाबों:


1

नि: शुल्क समाधान विस्तार "भौतिक कस्टम अपलोड फ़ोल्डर"

बहुत समय पहले मैंने इस धागे को खोलना शुरू किया था और अब रियल मीडिया लाइब्रेरी के लिए प्रयोग करने योग्य विस्तार प्लगइन है जो आपको अपने अपलोड फ़ोल्डर को शारीरिक रूप से प्रबंधित करने की अनुमति देता है ।

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

इस प्लगइन की जाँच करें: https://wordpress.org/plugins/physical-custom-upload-folder/

क्या आप wp-content / uploads फ़ोल्डर जानते हैं? वहां, फ़ाइलें वर्ष / माह आधारित फ़ोल्डर में संग्रहीत की जाती हैं। यह एक बहुत ही जटिल और बड़े पैमाने पर प्रक्रिया हो सकती है, खासकर जब आप फाइलजिला जैसे एफ़टीपी क्लाइंट के साथ काम कर रहे हों।

पहले से अपलोड की गई फ़ाइलों को ले जाना : यह प्लगइन वास्तविक मीडिया लाइब्रेरी में फ़ाइल को स्थानांतरित करने पर आपको भौतिक रूप से स्थानांतरित करने की अनुमति नहीं देता है क्योंकि वर्डप्रेस यूआरएल का उपयोग विभिन्न स्थानों में करता है। ऐसी प्रक्रिया को बनाए रखना बहुत कठिन है। तो यह केवल नए अपलोड के लिए काम करता है।

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