วันอังคารที่ 14 มกราคม 2020
6 ตอบกลับ
การเข้าชม 2.7K ครั้ง
สวัสดี
มันเข้ากันได้กับพื้นที่ digitalocean และ S3 ที่ชอบอื่น ๆ หรือไม่?
และเข้ากันได้กับตัวสร้าง UX ที่แบนราบ
ขอบคุณ!
มันเข้ากันได้กับพื้นที่ digitalocean และ S3 ที่ชอบอื่น ๆ หรือไม่?
และเข้ากันได้กับตัวสร้าง UX ที่แบนราบ
ขอบคุณ!
ก
5 ปีที่แล้ว
·
#13382 สวัสดี,
ขอขอบคุณที่ติดต่อเราเกี่ยวกับส่วนขยายนี้
เรายังไม่รองรับ Digital Ocean คุณสามารถใช้ Amazon S3 ได้ในขณะนี้: สำหรับรายละเอียดเพิ่มเติม:
https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library
ใช่ มันเข้ากันได้กับเครื่องมือสร้างเพจเกือบ
หวังว่ามันจะช่วยได้!
ไชโย
ขอขอบคุณที่ติดต่อเราเกี่ยวกับส่วนขยายนี้
มันเข้ากันได้กับพื้นที่ digitalocean และชอบ S3 อื่น ๆ หรือไม่?
เรายังไม่รองรับ Digital Ocean คุณสามารถใช้ Amazon S3 ได้ในขณะนี้: สำหรับรายละเอียดเพิ่มเติม:
https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library
และเข้ากันได้กับ UX Builder หรือไม่?
ใช่ มันเข้ากันได้กับเครื่องมือสร้างเพจเกือบ
หวังว่ามันจะช่วยได้!
ไชโย
ว
5 ปีที่แล้ว
·
#13385สวัสดี
ขอบคุณสำหรับคำตอบของคุณ
เนื่องจาก DO เข้ากันได้กับ S3 จึงอาจใช้งานได้กับข้อมูลรับรอง DO และที่อยู่เซิร์ฟเวอร์ ไม่ใช่ ?
คุณลองแล้วหรือยัง
ขอบคุณสำหรับคำตอบของคุณ
เนื่องจาก DO เข้ากันได้กับ S3 จึงอาจใช้งานได้กับข้อมูลรับรอง DO และที่อยู่เซิร์ฟเวอร์ ไม่ใช่ ?

ก
5 ปีที่แล้ว
·
#13386 สวัสดี,
ขอขอบคุณที่ติดต่อกลับมาพร้อมข้อมูลเพิ่มเติม
เรายังไม่ได้ทดสอบกับ DO และฉันคิดว่ามันเป็นไปไม่ได้
ไชโย
ขอขอบคุณที่ติดต่อกลับมาพร้อมข้อมูลเพิ่มเติม
เนื่องจาก DO เข้ากันได้กับ S3 จึงอาจใช้งานได้กับข้อมูลรับรอง DO และที่อยู่เซิร์ฟเวอร์ ไม่ใช่ ?คุณลองแล้วหรือยัง
เรายังไม่ได้ทดสอบกับ DO และฉันคิดว่ามันเป็นไปไม่ได้
ไชโย
คุณสามารถใช้มันกับ DigitalOcean ได้ มีแฮ็คง่ายๆ ที่จะทำให้มันใช้งานได้:
เนื่องจากฉันเพิ่งทำให้กับลูกค้า ฉันจะให้รายละเอียดเกี่ยวกับการแฮ็ก จากนั้นอธิบายว่าคุณจะแยกการทำงานออกจากกันได้อย่างไร
--
แม้ว่าเรายังไม่ได้ทำงาน 100% แต่เรามีความคืบหน้าอย่างมาก:
1. สับ
DigitalOcean Spaces สร้างขึ้นโดยใช้ API ของ S3 และใช้ ไลบรารี PHP "AWS SDK" ของ Amazon (ซึ่งเป็น bundled กับปลั๊กอิน)
เมื่อค้นพบสิ่งนี้ ฉันก็คิดได้ว่าตั้งแต่ DigitalOcean ส่งเสริมการใช้ SDK กับผลิตภัณฑ์ของตัวเองการแฮ็กโค้ดบางส่วนเพื่อให้ใช้งานได้ไม่ยากเกินไป
ในการทำเช่นนี้ ฉันพบว่าวิธีการทำงานของปลั๊กอินคือไฟล์คลาสสองไฟล์ (สำหรับแต่ละบริการ) -
ไฟล์ "admin" คือตำแหน่งที่ฟังก์ชันฟรอนต์เอนด์ตั้งอยู่ อีกอันใช้สำหรับเชื่อมต่อกับ S3 SDK กล่าวโดยย่อ ไฟล์ "admin" ถูกโหลดผ่าน Ajax หรือ WP front-end และฟังก์ชันของไฟล์จะเรียกใช้ไฟล์ S3 (โดยใช้ข้อมูลประจำตัวที่จัดเก็บไว้) ทำให้สามารถดำเนินการต่างๆ (เช่น การซิงค์) กับบัคเก็ต S3 ของคุณ วิธีนี้ใช้ได้ผลดี แต่มีปัญหาสำคัญประการหนึ่งในการทำให้ DigitalOcean ใช้งานได้:
DigitalOcean คือ ไม่ ภูมิภาคไม่เชื่อเรื่องพระเจ้า ซึ่งหมายความว่าคำขอแต่ละรายการมีการกำหนดขอบเขตไปยังภูมิภาคเฉพาะ ในขณะที่ S3 ไม่ใช่ นี่ไม่ใช่ปัญหาในตัวเอง (การแฮ็กของเราจะยังใช้ได้อยู่) แต่ถ้าคุณต้องการใช้ฟังก์ชัน "เต็มรูปแบบ" (ภูมิภาค/ที่เก็บข้อมูลต่างกัน) คุณต้องแน่ใจว่าคุณจะต้องเรียกใช้คลาส "ไม่ใช่ผู้ดูแลระบบ" ด้วย การตั้งค่าข้อมูลรับรองที่กำหนดเองในแต่ละครั้ง
-
แฮ็คประกอบด้วยสิ่งต่อไปนี้:
a) เปลี่ยนไฟล์ "admin" เพื่อใช้ "endpoint" สำหรับภูมิภาค DigitalOcean Spaces ของคุณ
b) ตรวจสอบให้แน่ใจว่าได้ตั้งค่าภูมิภาค 'us-east-1' ไว้ตลอดเวลา
c) เปลี่ยน "URL ของไฟล์แนบ" สำหรับแต่ละไฟล์แนบที่ซิงค์ในไลบรารีสื่อของคุณ
-
ขั้นตอนแรกคือการเปลี่ยนตัวเลือก "ค่าเริ่มต้น" ในไฟล์ "admin":
เริ่มต้นที่สาย 34 ของ
ในกรณีข้างต้น "ภูมิภาค" ของเราคือ AMS3 อาจแตกต่างกันไปขึ้นอยู่กับตำแหน่งที่เก็บพื้นที่ของคุณ
การเปลี่ยนรหัสนี้ไม่ได้ช่วยอะไรมาก แต่ทำให้แน่ใจว่ามีการใช้ค่าเริ่มต้นเดียวกันในแต่ละครั้ง (และตั้งค่า "จุดสิ้นสุด" ซึ่งเป็นพื้นฐานของการแฮ็กทั้งหมด)
-
เสร็จแล้วก็เปิดไฟล์คลาสอื่น
ตามที่กล่าวไว้ จะมีการเรียกสิ่งนี้ทุกครั้งที่คลาส "ผู้ดูแลระบบ" ต้องการสื่อสารกับ S3/DO
สิ่งที่เราจะทำที่นี่คือ "หลอก" จุดปลาย หมายความว่าเราฮาร์ดโค้ดมัน การดำเนินการนี้จะเปลี่ยน URL ที่ AWS SDK ส่งคำขอไป ซึ่งหมายความว่าควรยอมรับข้อมูลประจำตัว DigitalOcean โดยเพิ่มสองบรรทัดต่อไปนี้ที่บรรทัด 73 & 74 ตามลำดับ:
#73 $args['region'] = 'us-east-1';
#74 $args['endpoint'] = 'https://ams3.digitaloceanspaces.com';
ข้อมูลข้างต้นจะบังคับให้เปลี่ยน "ปลายทาง" ทุกครั้งที่คุณใช้ฟังก์ชัน "ผู้ดูแลระบบ" ใดๆ
มันทำงานโดยนำรายละเอียดข้างต้นมารวมกับข้อมูลประจำตัว S3 ที่เก็บไว้ของคุณ (ในกรณีของคุณคือคีย์ DigitalOcean API) ทำให้สคริปต์สามารถสื่อสารกับ DO ฉันอธิบายไว้ข้างต้นว่าสิ่งนี้ถูกจำกัดเพราะหมายความว่าคุณสามารถสื่อสารกับภูมิภาค DO เดียวเท่านั้น (สิ่งที่ฉันจะกล่าวถึงอย่างสมบูรณ์ในหนึ่งนาที)
-
หลังจากทำเช่นนี้ สิ่งสุดท้ายที่เราต้องทำคือเปลี่ยน "URL" สำหรับแต่ละไฟล์แนบที่ซิงค์กับ DO
สิ่งนี้ทำได้ภายในคลาส "admin" ในฟังก์ชัน "wpGetAttachmentUrl" (#2048) และ "addMetaInfo" (#1121):
ฉันไม่แน่ใจว่าฟังก์ชันใดมีฟังก์ชันเหล่านี้ (ฉันเชื่อว่ามันคือ #2048) แต่ฉันเปลี่ยนทั้งสองอย่าง
ท้ายที่สุด สิ่งที่คุณทำคือเปลี่ยนลิงก์ AWS เป็นลิงก์ของ DigitalOcean สิ่งที่ทำงานได้ดีสำหรับแฮ็คนี้มีดังต่อไปนี้:
#2057 ส่งคืน 'https://' . $infos['Bucket'] . '.ams3.digitaloceanspaces.com/' str_replace(' ', '%20', $infos['Key']);
สิ่งนี้จะเปลี่ยน "ลิงก์" ที่สื่อ WP ต้องมี DigitalOcean Spaces ซึ่งควรแสดงในแบ็กเอนด์และส่วนหน้าของไซต์ของคุณ
--
ฉันจะให้รายละเอียดการแก้ไขที่กว้างขึ้นในโพสต์อื่น
เนื่องจากฉันเพิ่งทำให้กับลูกค้า ฉันจะให้รายละเอียดเกี่ยวกับการแฮ็ก จากนั้นอธิบายว่าคุณจะแยกการทำงานออกจากกันได้อย่างไร
--
แม้ว่าเรายังไม่ได้ทำงาน 100% แต่เรามีความคืบหน้าอย่างมาก:
1. สับ
DigitalOcean Spaces สร้างขึ้นโดยใช้ API ของ S3 และใช้ ไลบรารี PHP "AWS SDK" ของ Amazon (ซึ่งเป็น bundled กับปลั๊กอิน)
เมื่อค้นพบสิ่งนี้ ฉันก็คิดได้ว่าตั้งแต่ DigitalOcean ส่งเสริมการใช้ SDK กับผลิตภัณฑ์ของตัวเองการแฮ็กโค้ดบางส่วนเพื่อให้ใช้งานได้ไม่ยากเกินไป
ในการทำเช่นนี้ ฉันพบว่าวิธีการทำงานของปลั๊กอินคือไฟล์คลาสสองไฟล์ (สำหรับแต่ละบริการ) -
./class/wpmfAddonAws3Admin.php
&./class/wpmfAws3.php
(สำหรับ S3)ไฟล์ "admin" คือตำแหน่งที่ฟังก์ชันฟรอนต์เอนด์ตั้งอยู่ อีกอันใช้สำหรับเชื่อมต่อกับ S3 SDK กล่าวโดยย่อ ไฟล์ "admin" ถูกโหลดผ่าน Ajax หรือ WP front-end และฟังก์ชันของไฟล์จะเรียกใช้ไฟล์ S3 (โดยใช้ข้อมูลประจำตัวที่จัดเก็บไว้) ทำให้สามารถดำเนินการต่างๆ (เช่น การซิงค์) กับบัคเก็ต S3 ของคุณ วิธีนี้ใช้ได้ผลดี แต่มีปัญหาสำคัญประการหนึ่งในการทำให้ DigitalOcean ใช้งานได้:
DigitalOcean คือ ไม่ ภูมิภาคไม่เชื่อเรื่องพระเจ้า ซึ่งหมายความว่าคำขอแต่ละรายการมีการกำหนดขอบเขตไปยังภูมิภาคเฉพาะ ในขณะที่ S3 ไม่ใช่ นี่ไม่ใช่ปัญหาในตัวเอง (การแฮ็กของเราจะยังใช้ได้อยู่) แต่ถ้าคุณต้องการใช้ฟังก์ชัน "เต็มรูปแบบ" (ภูมิภาค/ที่เก็บข้อมูลต่างกัน) คุณต้องแน่ใจว่าคุณจะต้องเรียกใช้คลาส "ไม่ใช่ผู้ดูแลระบบ" ด้วย การตั้งค่าข้อมูลรับรองที่กำหนดเองในแต่ละครั้ง
-
แฮ็คประกอบด้วยสิ่งต่อไปนี้:
a) เปลี่ยนไฟล์ "admin" เพื่อใช้ "endpoint" สำหรับภูมิภาค DigitalOcean Spaces ของคุณ
b) ตรวจสอบให้แน่ใจว่าได้ตั้งค่าภูมิภาค 'us-east-1' ไว้ตลอดเวลา
c) เปลี่ยน "URL ของไฟล์แนบ" สำหรับแต่ละไฟล์แนบที่ซิงค์ในไลบรารีสื่อของคุณ
-
ขั้นตอนแรกคือการเปลี่ยนตัวเลือก "ค่าเริ่มต้น" ในไฟล์ "admin":
เริ่มต้นที่สาย 34 ของ
./class/wpmfAddonAws3Admin.php
คุณจะเห็นว่ามีการสร้างชุดการตั้งค่าเริ่มต้นสำหรับชั้นเรียนอื่น คุณต้องทำสิ่งต่อไปนี้: - เปลี่ยน "ภูมิภาค" เป็น 'us-east-1'
- แอดไลน์
"endpoint" => "https://[[REGION]].digitaloceanspaces.com"
ในกรณีข้างต้น "ภูมิภาค" ของเราคือ AMS3 อาจแตกต่างกันไปขึ้นอยู่กับตำแหน่งที่เก็บพื้นที่ของคุณ
การเปลี่ยนรหัสนี้ไม่ได้ช่วยอะไรมาก แต่ทำให้แน่ใจว่ามีการใช้ค่าเริ่มต้นเดียวกันในแต่ละครั้ง (และตั้งค่า "จุดสิ้นสุด" ซึ่งเป็นพื้นฐานของการแฮ็กทั้งหมด)
-
เสร็จแล้วก็เปิดไฟล์คลาสอื่น
./class/wpmfAws3.php
:ตามที่กล่าวไว้ จะมีการเรียกสิ่งนี้ทุกครั้งที่คลาส "ผู้ดูแลระบบ" ต้องการสื่อสารกับ S3/DO
สิ่งที่เราจะทำที่นี่คือ "หลอก" จุดปลาย หมายความว่าเราฮาร์ดโค้ดมัน การดำเนินการนี้จะเปลี่ยน URL ที่ AWS SDK ส่งคำขอไป ซึ่งหมายความว่าควรยอมรับข้อมูลประจำตัว DigitalOcean โดยเพิ่มสองบรรทัดต่อไปนี้ที่บรรทัด 73 & 74 ตามลำดับ:
#73 $args['region'] = 'us-east-1';
#74 $args['endpoint'] = 'https://ams3.digitaloceanspaces.com';
ข้อมูลข้างต้นจะบังคับให้เปลี่ยน "ปลายทาง" ทุกครั้งที่คุณใช้ฟังก์ชัน "ผู้ดูแลระบบ" ใดๆ
มันทำงานโดยนำรายละเอียดข้างต้นมารวมกับข้อมูลประจำตัว S3 ที่เก็บไว้ของคุณ (ในกรณีของคุณคือคีย์ DigitalOcean API) ทำให้สคริปต์สามารถสื่อสารกับ DO ฉันอธิบายไว้ข้างต้นว่าสิ่งนี้ถูกจำกัดเพราะหมายความว่าคุณสามารถสื่อสารกับภูมิภาค DO เดียวเท่านั้น (สิ่งที่ฉันจะกล่าวถึงอย่างสมบูรณ์ในหนึ่งนาที)
-
หลังจากทำเช่นนี้ สิ่งสุดท้ายที่เราต้องทำคือเปลี่ยน "URL" สำหรับแต่ละไฟล์แนบที่ซิงค์กับ DO
สิ่งนี้ทำได้ภายในคลาส "admin" ในฟังก์ชัน "wpGetAttachmentUrl" (#2048) และ "addMetaInfo" (#1121):
ฉันไม่แน่ใจว่าฟังก์ชันใดมีฟังก์ชันเหล่านี้ (ฉันเชื่อว่ามันคือ #2048) แต่ฉันเปลี่ยนทั้งสองอย่าง
ท้ายที่สุด สิ่งที่คุณทำคือเปลี่ยนลิงก์ AWS เป็นลิงก์ของ DigitalOcean สิ่งที่ทำงานได้ดีสำหรับแฮ็คนี้มีดังต่อไปนี้:
#2057 ส่งคืน 'https://' . $infos['Bucket'] . '.ams3.digitaloceanspaces.com/' str_replace(' ', '%20', $infos['Key']);
สิ่งนี้จะเปลี่ยน "ลิงก์" ที่สื่อ WP ต้องมี DigitalOcean Spaces ซึ่งควรแสดงในแบ็กเอนด์และส่วนหน้าของไซต์ของคุณ
--
ฉันจะให้รายละเอียดการแก้ไขที่กว้างขึ้นในโพสต์อื่น
2. "เต็ม"
ดังที่กล่าวไว้ข้างต้น การแก้ไข "แบบเต็ม" ขึ้นอยู่กับวิธีที่ DigitalOcean เชื่อมต่อกับ AWS SDK
พูดง่ายๆ ก็คือ S3 ให้คุณ "เชื่อมต่อ" แล้วเลือกบัคเก็ตในภูมิภาคใดก็ได้ DigitalOcean อนุญาตให้คุณเชื่อมต่อและโต้ตอบกับ a . เท่านั้น เดี่ยว ภูมิภาคทุกครั้ง
หากคุณต้องการใช้งานปลั๊กอินอย่างเต็มรูปแบบ (ด้วย DigitalOcean) มีการปรับแต่งมากมายที่ต้องเกิดขึ้นในคลาส "ผู้ดูแลระบบ" โดยพื้นฐานแล้วคุณต้องตรวจสอบให้แน่ใจว่าคำขอทุกรายการมีการกำหนดขอบเขตไปยังปลายทางที่ถูกต้อง ซึ่งใช้เวลานานและค่อนข้างแพง (ในแง่ของการเชื่อมต่อ API)
-
เราได้ "ประเภท" นี้ใช้งานได้แม้ว่าจะหลวม ฉันกำลังเขียนสิ่งนี้ที่นี่เพื่อแบ่งปันความคืบหน้าและอาจมีคนอื่นอยากจะเอามันขึ้นมาหรืออะไรทำนองนั้น
--
คุณต้องทำ 4 สิ่งสำคัญเพื่อให้มันทำงานแยกกัน:
1. สร้างโฟลว์ UI "DigitalOcean" แยกต่างหาก
2. ลบการอ้างอิงถึง S3 (แทนที่ด้วย DigitalOcean ตามความจำเป็น)
3. เปลี่ยนโฟลว์ของคุณสมบัติบางอย่างเพื่ออนุญาตการสนับสนุนข้ามภูมิภาค
4. ตรวจสอบให้แน่ใจว่า DO ไม่รบกวน S3
-
1. ในการเพิ่มแท็บ "DigitalOcean" แยกต่างหาก คุณต้องไปที่ปลั๊กอินดั้งเดิมและค้นหาไฟล์ "cloud.php" (./class/pages/settings/cloud.php):
ฉันเพิ่งเพิ่มมันหลังจากแท็บ S3
เพื่อให้ใช้งานได้ คุณต้องมีตัวแปร $html_tabdo ที่จะเติม ซึ่งทำได้โดยการเปลี่ยนสองไฟล์
ไฟล์แรกคือ ./class/pages/settings/wp-folder-options.php (ปลั๊กอินหลัก/ดั้งเดิม):
ประการที่สองคือ ./class/class-wp-folder-option.php:
สิ่งนี้จะเติมแท็บด้วยการตั้งค่า DigitalOcean ต่างๆ
-
2. ในการแทนที่ S3 ด้วย DO คุณต้องแน่ใจว่าคุณมีชุดไฟล์และการตั้งค่าคิวที่แตกต่างกันโดยสิ้นเชิง เพื่อให้แน่ใจว่าทั้งสองระบบจะไม่ขัดแย้งกัน
สิ่งนี้จำเป็นต้องทำหลายอย่าง โดยหลักแล้วคือการสร้างชุดคลาส "admin" และ "connection" ใหม่ ฉันจะไม่ลงลึกถึงวิธีการทำสิ่งนี้ แต่โดยพื้นฐานแล้วคุณต้องการสร้างชุดคลาสใหม่ซึ่งสร้างการตั้งค่า config ของตัวเอง และใช้สิ่งเหล่านี้เพื่อเชื่อมต่อกับปลายทางสำหรับ DO:
-
3. การสนับสนุนข้ามภูมิภาค
ดังที่กล่าวไว้ในโพสต์ข้างต้น ระบบของ DO ทำงานแตกต่างไปจาก S3 โดยที่ทุกคำขอมีการกำหนดขอบเขตไปยังภูมิภาคเฉพาะ (S3 เป็นแบบไม่เชื่อเรื่องพระเจ้าของภูมิภาค)
ซึ่งหมายความว่าหากคุณต้องการทำงานกับบัคเก็ต/สเปซจากภูมิภาคอื่น คุณต้องใช้เวทย์มนตร์เพื่อทำให้ทุกอย่างทำงานร่วมกันได้
ฉันมีเวลาไม่มาก ดังนั้นจะไม่ครอบคลุมทั้งหมดที่นี่ แต่จะบอกว่าหากคุณต้องการให้ระบบทำงาน คุณต้องแก้ไขไฟล์ "./class/wpmfDo.php" ในแบ็กเอนด์ - ตรวจสอบให้แน่ใจว่าคุณสามารถผ่าน "จุดปลาย" ที่คุณต้องการเรียกใช้อินสแตนซ์ของ SDK สำหรับ...
สิ่งนี้ทำให้เราสามารถกำหนด "จุดปลาย" ("ภูมิภาค" ที่แตกต่างกัน
สำหรับเมื่อคุณต้องการแสดงรายการช่องว่างต่างๆ เป็นต้น
ตัวอย่างที่ดีของการดำเนินการนี้คือเมื่อคุณต้องการแสดงรายการที่เก็บข้อมูลที่มีอยู่:
เพื่อให้บรรลุผลข้างต้น คุณจะต้องวนรอบภูมิภาคทั้งหมดที่มีใน DO แล้วสร้างอาร์เรย์ใหม่ของบัคเก็ตที่พร้อมใช้งาน อย่างที่คุณจะประทับใจ นี่เป็นวิธีแก้ปัญหาที่ยุ่งยากในการสร้าง:
สิ่งนี้จะสร้างตัวแปร $list_buckets จากภูมิภาคต่างๆ (ไม่ใช่แค่ที่คุณใช้ในการเชื่อมต่อ)
-
4. ยังไม่ได้ทำสิ่งนี้เลย
โดยพื้นฐานแล้ว คุณต้องทำให้ DigitalOcean ทำงานร่วมกับ S3 ได้ แม้ว่าจะมี S3 อยู่ก็ตาม
สิ่งนี้จะต้องทำให้ฟังก์ชัน "การซิงค์" ทำงานได้และอีกหลายอย่างซึ่งฉันยังไม่ได้ดำเนินการให้เสร็จสิ้น
ดังที่กล่าวไว้ข้างต้น การแก้ไข "แบบเต็ม" ขึ้นอยู่กับวิธีที่ DigitalOcean เชื่อมต่อกับ AWS SDK
พูดง่ายๆ ก็คือ S3 ให้คุณ "เชื่อมต่อ" แล้วเลือกบัคเก็ตในภูมิภาคใดก็ได้ DigitalOcean อนุญาตให้คุณเชื่อมต่อและโต้ตอบกับ a . เท่านั้น เดี่ยว ภูมิภาคทุกครั้ง
หากคุณต้องการใช้งานปลั๊กอินอย่างเต็มรูปแบบ (ด้วย DigitalOcean) มีการปรับแต่งมากมายที่ต้องเกิดขึ้นในคลาส "ผู้ดูแลระบบ" โดยพื้นฐานแล้วคุณต้องตรวจสอบให้แน่ใจว่าคำขอทุกรายการมีการกำหนดขอบเขตไปยังปลายทางที่ถูกต้อง ซึ่งใช้เวลานานและค่อนข้างแพง (ในแง่ของการเชื่อมต่อ API)
-
เราได้ "ประเภท" นี้ใช้งานได้แม้ว่าจะหลวม ฉันกำลังเขียนสิ่งนี้ที่นี่เพื่อแบ่งปันความคืบหน้าและอาจมีคนอื่นอยากจะเอามันขึ้นมาหรืออะไรทำนองนั้น
--
คุณต้องทำ 4 สิ่งสำคัญเพื่อให้มันทำงานแยกกัน:
1. สร้างโฟลว์ UI "DigitalOcean" แยกต่างหาก
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 (ปลั๊กอินหลัก/ดั้งเดิม):
ประการที่สองคือ ./class/class-wp-folder-option.php:
สิ่งนี้จะเติมแท็บด้วยการตั้งค่า DigitalOcean ต่างๆ
-
2. ในการแทนที่ S3 ด้วย DO คุณต้องแน่ใจว่าคุณมีชุดไฟล์และการตั้งค่าคิวที่แตกต่างกันโดยสิ้นเชิง เพื่อให้แน่ใจว่าทั้งสองระบบจะไม่ขัดแย้งกัน
สิ่งนี้จำเป็นต้องทำหลายอย่าง โดยหลักแล้วคือการสร้างชุดคลาส "admin" และ "connection" ใหม่ ฉันจะไม่ลงลึกถึงวิธีการทำสิ่งนี้ แต่โดยพื้นฐานแล้วคุณต้องการสร้างชุดคลาสใหม่ซึ่งสร้างการตั้งค่า config ของตัวเอง และใช้สิ่งเหล่านี้เพื่อเชื่อมต่อกับปลายทางสำหรับ DO:
-
3. การสนับสนุนข้ามภูมิภาค
ดังที่กล่าวไว้ในโพสต์ข้างต้น ระบบของ DO ทำงานแตกต่างไปจาก S3 โดยที่ทุกคำขอมีการกำหนดขอบเขตไปยังภูมิภาคเฉพาะ (S3 เป็นแบบไม่เชื่อเรื่องพระเจ้าของภูมิภาค)
ซึ่งหมายความว่าหากคุณต้องการทำงานกับบัคเก็ต/สเปซจากภูมิภาคอื่น คุณต้องใช้เวทย์มนตร์เพื่อทำให้ทุกอย่างทำงานร่วมกันได้
ฉันมีเวลาไม่มาก ดังนั้นจะไม่ครอบคลุมทั้งหมดที่นี่ แต่จะบอกว่าหากคุณต้องการให้ระบบทำงาน คุณต้องแก้ไขไฟล์ "./class/wpmfDo.php" ในแบ็กเอนด์ - ตรวจสอบให้แน่ใจว่าคุณสามารถผ่าน "จุดปลาย" ที่คุณต้องการเรียกใช้อินสแตนซ์ของ SDK สำหรับ...
สิ่งนี้ทำให้เราสามารถกำหนด "จุดปลาย" ("ภูมิภาค" ที่แตกต่างกัน

ตัวอย่างที่ดีของการดำเนินการนี้คือเมื่อคุณต้องการแสดงรายการที่เก็บข้อมูลที่มีอยู่:
เพื่อให้บรรลุผลข้างต้น คุณจะต้องวนรอบภูมิภาคทั้งหมดที่มีใน DO แล้วสร้างอาร์เรย์ใหม่ของบัคเก็ตที่พร้อมใช้งาน อย่างที่คุณจะประทับใจ นี่เป็นวิธีแก้ปัญหาที่ยุ่งยากในการสร้าง:
สิ่งนี้จะสร้างตัวแปร $list_buckets จากภูมิภาคต่างๆ (ไม่ใช่แค่ที่คุณใช้ในการเชื่อมต่อ)
-
4. ยังไม่ได้ทำสิ่งนี้เลย
โดยพื้นฐานแล้ว คุณต้องทำให้ DigitalOcean ทำงานร่วมกับ S3 ได้ แม้ว่าจะมี S3 อยู่ก็ตาม
สิ่งนี้จะต้องทำให้ฟังก์ชัน "การซิงค์" ทำงานได้และอีกหลายอย่างซึ่งฉันยังไม่ได้ดำเนินการให้เสร็จสิ้น
NS
2 ปีที่แล้ว
·
#18122สวัสดี
คุณลักษณะนี้เพิ่งได้รับการติดตั้งในปลั๊กอิน
ดูรายละเอียดด้านล่าง ไชโย
คุณลักษณะนี้เพิ่งได้รับการติดตั้งในปลั๊กอิน

ดูรายละเอียดด้านล่าง ไชโย
- หน้าหนังสือ :
- 1
ยังไม่มีการตอบกลับสำหรับโพสต์นี้
กรุณาเข้าสู่ระบบเพื่อโพสต์ตอบกลับ
คุณจะต้องเข้าสู่ระบบเพื่อให้สามารถโพสต์ตอบกลับ เข้าสู่ระบบโดยใช้แบบฟอร์มด้านขวาหรือลงทะเบียนบัญชีหากคุณยังใหม่ที่นี่ ลงทะเบียนที่นี่ "