मुख्य विषयवस्तु पर जाएं
  सदस्यता लें
नमस्कार,

क्या यह DigitalOcean Spaces और अन्य S3 जैसे प्लेटफॉर्म के साथ संगत है?

और क्या यह Flatsome UX Builder के साथ भी संगत है

? धन्यवाद!
5 साल पहले
नमस्ते,

इस एक्सटेंशन के बारे में हमसे संपर्क करने के लिए धन्यवाद।

क्या यह DigitalOcean Spaces और अन्य S3 जैसे प्लेटफॉर्म के साथ संगत है?

हमने अभी तक Digital Ocean को सपोर्ट नहीं किया है, आप फिलहाल Amazon S3 का इस्तेमाल कर सकते हैं: अधिक जानकारी के लिए:

https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library

और क्या यह फ्लैटसोम यूएक्स बिल्डर के साथ संगत है?

हां, यह लगभग सभी पेज बिल्डरों के साथ संगत है।

आशा है कि यह मदद करेगा!
प्रोत्साहित करना,
डब्ल्यू
5 साल पहले
हाय,

आपके जवाब के लिए धन्यवाद।

चूंकि DO S3 के साथ संगत है, शायद यह DO क्रेडेंशियल्स और सर्वर एड्रेस के साथ काम कर जाए, है ना?:) क्या आपने इसे आज़माया है?
5 साल पहले
नमस्ते,

अधिक जानकारी के साथ मुझसे संपर्क करने के लिए धन्यवाद।

चूंकि DO S3 के साथ संगत है, शायद यह DO क्रेडेंशियल्स और सर्वर एड्रेस के साथ काम करता हो, है ना?:) क्या आपने इसे आजमाया है?


हमने डीओ के साथ परीक्षण नहीं किया है और मुझे लगता है कि यह संभव नहीं है।

प्रोत्साहित करना,
आर
5 साल पहले
आप इसे DigitalOcean के साथ इस्तेमाल कर सकते हैं, इसे काम में लाने के लिए एक सरल तरीका है:

digitalocean.png

चूंकि मैंने इसे अभी-अभी एक क्लाइंट के लिए किया है, इसलिए मैं पहले इस तरकीब का विस्तार से वर्णन करूंगा, और फिर अलग से समझाऊंगा कि आप इसे कैसे काम में ला सकते हैं।

--

हालांकि अभी तक यह 100% काम नहीं कर रहा है, लेकिन हमने काफी प्रगति की है:

1. किराये का

DigitalOcean Spaces, S3 के API पर आधारित है और इसका उपयोग करता है। अमेज़न की "AWS SDK" PHP लाइब्रेरी (जो प्लगइन के साथ bundleगया है)।

यह पता चलने पर मुझे लगा कि चूंकि DigitalOcean अपने उत्पाद के साथ SDK का उपयोग करने को बढ़ावा देता है।कोड में कुछ बदलाव करके इसे काम करने लायक बनाना बहुत मुश्किल नहीं होगा।

ऐसा करने के लिए, मैंने पाया कि प्लगइन दो क्लास फाइलों (प्रत्येक सेवा के लिए) के साथ काम करता है -
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(एस3 के लिए)।

"एडमिन" फ़ाइल में फ्रंट-एंड की सभी कार्यक्षमताएँ होती हैं; दूसरी फ़ाइल S3 SDK के साथ इंटरफ़ेस करने के लिए है। संक्षेप में, "एडमिन" फ़ाइल Ajax या WP फ्रंट-एंड के माध्यम से लोड होती है, और इसकी कार्यक्षमता S3 फ़ाइल को (संग्रहित क्रेडेंशियल्स का उपयोग करके) सक्रिय करती है, जिससे यह आपके S3 बकेट में क्रियाएँ (जैसे सिंक करना) कर सकती है। यह बहुत अच्छे से काम करता है, लेकिन DigitalOcean के साथ इसे काम कराने में एक बड़ी समस्या है:

एंडपॉइंट.png

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

-

इस हैक में निम्नलिखित शामिल हैं:

a) "admin" फ़ाइल को बदलकर अपने DigitalOcean Spaces क्षेत्र के लिए "endpoint" का उपयोग करें
b) यह सुनिश्चित करें कि 'us-east-1' क्षेत्र हमेशा सेट रहे।
(c) अपनी मीडिया लाइब्रेरी में सिंक किए गए प्रत्येक अटैचमेंट के लिए "अटैचमेंट URL" बदलें।

-

पहला चरण "admin" फ़ाइल में "डिफ़ॉल्ट" विकल्पों को बदलना है:

admin.png

पंक्ति 34 से शुरू करते हुए
./class/wpmfAddonAws3Admin.php
आप देखेंगे कि दूसरी क्लास के लिए डिफ़ॉल्ट सेटिंग्स का एक सेट बनाया गया है। आपको निम्नलिखित कार्य करने होंगे:


  • "क्षेत्र" को 'us-east-1' में बदलें
  • पंक्ति जोड़ें
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



ऊपर दिए गए उदाहरण में, हमारा "क्षेत्र" AMS3 है। यह आपके स्थान के आधार पर भिन्न हो सकता है।

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

-

ऐसा करने के बाद, हम दूसरी क्लास फ़ाइल की ओर बढ़ते हैं।
./class/wpmfAws3.php
:

class.png

जैसा कि उल्लेख किया गया है, इसे हर बार तब लागू किया जाता है जब "एडमिन" क्लास S3/DO के साथ संवाद करना चाहती है।

हम यहाँ एंडपॉइंट को "स्पूफ" करने जा रहे हैं, यानी इसे हार्ड-कोड करेंगे। इससे AWS SDK द्वारा अनुरोध भेजे जाने वाले URL में बदलाव आएगा, जिसका मतलब है कि हमारे DigitalOcean क्रेडेंशियल्स स्वीकार किए जाने चाहिए। ऐसा करने के लिए, लाइन 73 और 74 पर क्रमशः निम्नलिखित दो लाइनें जोड़ें:

#73 $args['क्षेत्र'] = 'यूएस-पूर्व-1';
#74 $args['endpoint'] = 'https://ams3.digitaloceanspaces.com';

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

यह ऊपर दी गई जानकारी को आपके संग्रहीत S3 क्रेडेंशियल्स (आपके मामले में, DigitalOcean API कुंजी) के साथ मिलाकर काम करता है, जिससे स्क्रिप्ट DO के साथ संवाद कर पाती है। मैंने ऊपर बताया है कि इसकी कुछ सीमाएँ हैं क्योंकि इसका मतलब है कि आप केवल एक ही DO क्षेत्र के साथ संवाद कर सकते हैं (जिसके बारे में मैं थोड़ी देर में विस्तार से बताऊंगा)।

-

इसके बाद, हमें जो आखिरी काम करना है, वह है DO के साथ सिंक किए गए प्रत्येक अटैचमेंट के लिए "URL" को बदलना।

यह "admin" क्लास के अंदर, "wpGetAttachmentUrl" (#2048) और "addMetaInfo" (#1121) फ़ंक्शन में किया जाता है:

1121.png

2048.png

मुझे यकीन नहीं है कि इनमें से कौन सा फ़ंक्शन वास्तव में कार्यक्षमता प्रदान करता है (मेरा मानना ​​है कि यह #2048 है), लेकिन मैंने फिर भी उन दोनों को बदल दिया है।

अंततः, आपको बस AWS लिंक को DigitalOcean लिंक में बदलना है। इस ट्रिक के लिए जो लिंक कारगर साबित हुआ, वह निम्नलिखित था:

#2057 return 'https://' . $infos['बकेट'] . '.ams3.digitaloceanspaces.com/' . str_replace(' ', '%20', $infos['कुंजी']);

इससे WP मीडिया का DigitalOcean Spaces से जुड़ा "लिंक" बदल जाता है, जिससे यह आपकी साइट के बैकएंड और फ्रंटएंड दोनों में दिखाई देना चाहिए।

--

मैं इस समस्या के व्यापक समाधान के बारे में एक अन्य पोस्ट में विस्तार से बताऊंगा।
आर
5 साल पहले
2. "भरा हुआ"

जैसा कि ऊपर बताया गया है, "पूर्ण" समाधान इस बात पर निर्भर करता है कि DigitalOcean, AWS SDK के साथ कैसे इंटरफेस करता है।

सरल शब्दों में कहें तो, S3 आपको किसी भी क्षेत्र में "कनेक्ट" करने और फिर एक बकेट चुनने की अनुमति देता है; DigitalOcean आपको केवल एक बकेट से कनेक्ट करने और उसके साथ इंटरैक्ट करने की अनुमति देता है। अकेला प्रत्येक बार क्षेत्र।

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

-

हमने इसे किसी तरह से काम में ला दिया है, हालांकि पूरी तरह से नहीं। मैं यहाँ इसलिए लिख रहा हूँ ताकि प्रगति को साझा कर सकूँ, और शायद कोई और इसे आगे बढ़ाना चाहे।

--

इसे अलग से काम करने के लिए आपको 4 मुख्य काम करने होंगे:

1. एक अलग "DigitalOcean" UI फ़्लो बनाएँ
2. S3 के सभी संदर्भों को हटा दें (आवश्यकतानुसार DigitalOcean से प्रतिस्थापित करें)
3. अंतर-क्षेत्रीय समर्थन की अनुमति देने के लिए कुछ विशेषताओं के प्रवाह को बदलें।
4. सुनिश्चित करें कि DO, S3 में हस्तक्षेप न करे।

-

1. एक अलग "DigitalOcean" टैब जोड़ने के लिए, आपको मूल प्लगइन पर जाना होगा और "cloud.php" फ़ाइल (./class/pages/settings/cloud.php) का पता लगाना होगा:

<div id="do" class="tab-content">
<div class="wpmf_width_100 p-tb-20 wpmf_left top_bar">
<h1 class="wpmf_left"><?php esc_html_e('DigitalOcean', 'wpmf') ?></h1>
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/submit_button.php';
?>
</div>
<div class="content-box content-wpmf-general">
<?php
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- View request, no action
if (isset($_POST['btn_wpmf_save'])) {
?>
<div class="wpmf_width_100 top_bar saved_infos" style="padding: 20px 0">
<?php
require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/saved_info.php';
?>
</div>
<?php
}
?>

<div>
<div class="wpmf_row_full">
<?php
if (is_plugin_active('wp-media-folder-addon/wp-media-folder-addon.php')) {
// phpcs:ignore WordPress.Security.EscapeOutput -- Content already escaped in the method
echo $html_tabdo;
}
?>
</div>
</div>
</div>
</div>


मैंने इसे S3 टैब के ठीक बाद जोड़ा है।

इसे काम करने के लिए, आपको $html_tabdo वेरिएबल को पॉपुलेट करने की आवश्यकता होगी, जो दो फाइलों को बदलकर किया जाता है।

पहली फाइल ./class/pages/settings/wp-folder-options.php है (मुख्य/मूल प्लगइन):

S3.png

दूसरा है ./class/class-wp-folder-option.php:

html_do.png

इससे टैब में DigitalOcean की विभिन्न सेटिंग्स दिखाई देंगी।

-

2. S3 को DO से बदलने के लिए, आपको यह सुनिश्चित करना होगा कि आपके पास फ़ाइलों और कतार सेटिंग्स का एक पूरी तरह से अलग सेट हो ताकि यह सुनिश्चित हो सके कि दोनों सिस्टम आपस में टकराव न करें।

इसके लिए कई काम करने होंगे, जिनमें मुख्य रूप से "एडमिन" और "कनेक्शन" क्लास का एक नया सेट बनाना शामिल है। मैं इसकी विस्तृत प्रक्रिया में नहीं जाऊंगा, लेकिन मूल रूप से आपको क्लास का एक नया सेट बनाना होगा जो अपनी खुद की कॉन्फ़िगरेशन सेटिंग्स बनाए और उनका उपयोग DO के एंडपॉइंट्स से कनेक्ट करने के लिए करे।

api_code.png

-

3. क्रॉस रीजन सपोर्ट।

जैसा कि ऊपर दिए गए पोस्ट में बताया गया है, DO की प्रणाली S3 से अलग तरीके से काम करती है, क्योंकि इसमें प्रत्येक अनुरोध एक विशिष्ट क्षेत्र तक सीमित होता है (S3 की प्रणाली क्षेत्र-स्वतंत्र है)।

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

समय कम होने के कारण मैं यहाँ पूरी बात नहीं समझा पाऊँगा, लेकिन इतना ज़रूर कहूँगा कि यदि आप सिस्टम को चालू करना चाहते हैं, तो आपको बैकएंड में "./class/wpmfDo.php" फ़ाइल को संपादित करना होगा - यह सुनिश्चित करते हुए कि आप SDK के इंस्टेंस को कॉल करने के लिए इच्छित "एंडपॉइंट" पास कर सकें...

एंडपॉइंट.png

इससे हमें विभिन्न "अंतिम बिंदुओं" ("क्षेत्रों") को परिभाषित करने की क्षमता मिलती है।;) जब आपको विभिन्न स्थानों आदि की सूची बनाने की आवश्यकता हो।

इसका एक अच्छा उदाहरण तब देखने को मिलता है जब आप उपलब्ध बाल्टियों की सूची देखना चाहते हैं:

क्षेत्र.png

उपरोक्त को प्राप्त करने के लिए, आपको DO में उपलब्ध सभी क्षेत्रों से होकर गुजरना होगा, और फिर उपलब्ध बकेट की एक नई सरणी बनानी होगी। जैसा कि आप समझ सकते हैं, यह एक जटिल समाधान था:

buckets_list.png

इससे $list_buckets वेरिएबल अलग-अलग क्षेत्रों से बनता है (न कि केवल उस क्षेत्र से जिससे आपने कनेक्ट किया था)।

-

4. मैंने अभी तक यह नहीं किया है

मूल रूप से, आपको S3 की मौजूदगी में भी DigitalOcean को S3 के साथ काम करने में सक्षम होना चाहिए।

इसके लिए "सिंक" कार्यक्षमता को चालू करना और कई अन्य चीजों को ठीक करना आवश्यक होगा, जिन्हें मैंने अभी तक पूरा नहीं किया है।
नमस्कार,

यह फ़ीचर हाल ही में प्लगइन में जोड़ा गया है। कृपया नीचे दिए गए विवरण देखें।:)

धन्यवाद।
  • पृष्ठ :
  • 1
इस पोस्ट के लिए अभी तक कोई उत्तर नहीं दिया गया है।