1. 壁紙67
  2. 關於WP Media Folder的售前問題
  3. 1月14 2020日,星期二
  4.  通過電子郵件訂閱
你好

它與digitalocean空間和其他S3喜歡的產品兼容嗎?

並與平板式UX Builder兼容

謝謝 !
接受答案待審核
你好

感謝您就此擴展程序與我們聯繫。

它與digitalocean空間和其他S3喜歡的產品兼容嗎?

我們尚不支持Digital Ocean,您當前可以使用Amazon S3:有關更多詳細信息:

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

並與平板式UX Builder兼容

是的,它幾乎與頁面構建器兼容。

希望能幫助到你!
乾杯,
接受答案待審核
你好

感謝您的回答。

因為DO與S3兼容,也許可以與DO憑證和服務器地址一起使用,不是嗎? :) 你試過了嗎?
接受答案待審核
你好

感謝您與我聯繫以獲取更多信息。

因為DO與S3兼容,也許可以與DO憑證和服務器地址一起使用,不是嗎? :) 你試過了嗎?


我們尚未使用DO進行測試,我認為這是不可能的。

乾杯,
接受答案待審核
您可以將其與DigitalOcean一起使用,有一個簡單的技巧可以使其工作:

digitalocean.png

由於我只是為客戶端完成的,因此我將詳細介紹該hack,然後解釋如何使它單獨工作。

--

儘管我們還沒有100%地工作,但我們取得了重大進展:

1. 哈克

DigitalOcean Spaces圍繞S3的API構建,並使用 亞馬遜的“ AWS SDK” PHP庫 (與插件bundle在一起)。

在發現這一點時,我發現 DigitalOcean鼓勵將SDK與自己的產品一起使用,破解一些代碼使其工作不會太困難。

為此,我發現插件的工作方式是使用兩個類文件(針對每個服務)-
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(對於S3)。

前端功能位於“ admin”文件中; 另一個是與S3 SDK的接口。 簡而言之,“管理”文件是通過Ajax或WP前端加載的,其功能會調用S3文件(使用存儲的憑據),從而使其能夠執行操作(例如同步)到您的S3存儲桶。 這很好用,但是要使其與DigitalOcean一起工​​作存在一個主要問題:

endpoint.png

數字海洋是 不可知區域。 這意味著每個請求的作用域都限定於特定區域,而S3則不然。 這本身不是問題(我們的hack仍然可以使用),但是如果您要實現“完整”功能(不同的區域/存儲桶),則需要確保必須使用以下命令調用“ non admin”類每次自定義憑據設置。

-

該hack包括以下內容:

a)更改“ admin”文件以將“端點”用於您的DigitalOcean Spaces區域
b)確保始終設置“ us-east-1”區域
c)更改媒體庫中每個已同步附件的“附件URL”

-

第一步是更改“ admin”文件中的“ default”選項:

admin.png

從第34行開始
./class/wpmfAddonAws3Admin.php
,您將看到為另一個類創建了一組默認設置。 您需要執行以下操作:


  • 將“區域”更改為“ us-east-1”
  • 添加行
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



在上述情況下,我們的“區域”是AMS3。 這可能會有所不同,具體取決於您保留空間的位置。

更改此代碼實際上並沒有多大用處,但可以確保每次都使用相同的默認值(並設置了“端點”,這是整個hack的基礎)。

-

完成此操作後,我們轉到另一個類文件
./class/wpmfAws3.php
:

class.png

如前所述,每次“ admin”類希望與S3 / DO通信時都會調用此方法。

我們在這裡要做的是“欺騙”端點,這意味著我們對其進行了硬編碼。 這將更改AWS開發工具包向其發送請求的URL,這意味著應接受我們的DigitalOcean憑證。 要做到這一點,只需添加在線以下兩行73 & 74分別為:

#73 $ args ['region'] ='us-east-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返回'https://'。 $ infos ['Bucket']。 '.ams3.digitaloceanspaces.com /'。 str_replace('','%20',$ infos ['Key']));

這將更改WP媒體與DigitalOcean Spaces的“鏈接”,該鏈接應在網站的後端和前端中顯示。

--

我將在另一篇文章中詳細介紹更廣泛的修復方法。
附件( 6 )
接受答案待審核
2. “充分”

如上所述,“完整”修復取決於DigitalOcean與AWS開發工具包的接口方式。

簡而言之,S3允許您“連接”然後在任何區域中選擇一個存儲桶。 DigitalOcean僅允許您與 區域。

如果要實現插件的全部功能(使用DigitalOcean),則需要在“ admin”類中進行很多自定義。 基本上,您需要確保將每個請求的範圍都限定在正確的端點上,這既耗時又非常昂貴(就API連接而言)。

-

儘管有些鬆散,但我們已經“做到”了。 我在這裡寫這篇文章是作為分享進度的一種方式,也許其他人會更喜歡它或其他東西。

--

您需要做兩件事才能使其分別工作:

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 。 要用DO替換S3,您需要確保擁有一套完全不同的文件和隊列設置,以確保兩個系統不衝突。

這需要做很多事情,主要是創建一組新的“ admin”和“ connection”類。 我不會深入探討如何執行此操作,但是您基本上想創建一組新的類,這些類創建自己的配置設置,並使用這些設置連接到DO的端點:

api_code.png

-

3 。 跨區域支持。

如以上文章所述,DO的系統與S3的工作方式不同,因為每個請求的範圍僅限於特定區域(S3的區域不可知)。

這意味著,如果要使用其他區域的存儲桶/空間,則需要進行一些魔術操作才能使其全部正常工作。

我時間不多了,所以這裡不介紹全部內容,但是會說,如果您想使系統正常運行,則需要在後端編輯“ ./class/wpmfDo.php”文件-確保您能夠傳遞您希望為以下目的調用SDK實例的“端點”:

endpoint.png

這使我們能夠定義不同的“端點”(“區域”;) 用於何時需要列出其他空格等

當您要列出可用的存儲桶時,一個很好的例子就是:

region.png

要實現上述目的,您需要循環瀏覽DO中所有可用的區域,然後創建一個新的可用存儲區陣列。 如您所見,這是創建一個棘手的解決方案:

buckets_list.png

這將從不同區域(而不僅僅是您用於連接的區域)中創建$ list_buckets變量。

-

4 。 還沒有這樣做

基本上,即使存在S3,您也需要能夠使DigitalOcean與S3一起使用。

這將需要使“同步”功能正常工作以及許多其他事情,而我還沒有完成。
附件( 6 )
  • 頁面:
  • 1


目前還沒有回复。
成為第一位回复此帖子的人!