你好,
感谢您就此扩展程序与我们联系。
我们尚不支持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兼容
是的,它几乎与页面构建器兼容。
希望能帮助到你!
干杯,
您可以将其与DigitalOcean一起使用,有一个简单的技巧可以使其工作:
由于我只是为客户端完成的,因此我将详细介绍该hack,然后解释如何使它单独工作。
--
尽管我们还没有100%地工作,但我们取得了重大进展:
1. 哈克
DigitalOcean Spaces围绕S3的API构建,并使用 亚马逊的“ AWS SDK” PHP库 (与插件 bundle在一起)。
在发现这一点时,我发现 DigitalOcean提倡将SDK与自己的产品一起使用,破解一些代码使其工作不会太困难。
为此,我发现插件的工作方式是使用两个类文件(针对每个服务)-
前端功能位于“ admin”文件中; 另一个是与S3 SDK的接口。 简而言之,“管理”文件是通过Ajax或WP前端加载的,其功能会调用S3文件(使用存储的凭据),从而使其能够执行操作(例如同步)到您的S3存储桶。 这很好用,但是要使其与DigitalOcean一起工作存在一个主要问题:
数字海洋是 不 不可知区域。 这意味着每个请求的作用域都限定于特定区域,而S3则不然。 这本身不是问题(我们的hack仍然可以使用),但是如果您要实现“完整”功能(不同的区域/存储桶),则需要确保必须使用以下命令调用“ non admin”类每次自定义凭据设置。
-
该hack包括以下内容:
a)更改“ admin”文件以将“端点”用于您的DigitalOcean Spaces区域
b)确保始终设置“ us-east-1”区域
c)更改媒体库中每个已同步附件的“附件URL”
-
第一步是更改“ admin”文件中的“ default”选项:
从第 34 行开始
在上述情况下,我们的“区域”是AMS3。 这可能会有所不同,具体取决于您保留空间的位置。
更改此代码实际上并没有多大用处,但是可以确保每次都使用相同的默认值(并且设置了“端点”,这是整个hack的基础)。
-
完成此操作后,我们转到另一个类文件
如前所述,每次“ admin”类希望与S3 / DO通信时都会调用此方法。
我们在这里要做的是“欺骗”端点,这意味着我们对其进行硬编码。 这将更改 AWS SDK 发送请求的 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)中完成的:
我不确定这些功能中的哪一个真正提供了功能(我相信是#2048),但是无论如何我都更改了它们。
最终,您要做的就是将AWS链接更改为DigitalOcean。 对此黑客有效的工具如下:
#2057返回'https://'。 $ infos ['Bucket']。 '.ams3.digitaloceanspaces.com /'。 str_replace('','%20',$ infos ['Key']));
这会更改 WP 媒体与 DigitalOcean Spaces 的“链接”,该链接应显示在您网站的后端和前端。
--
我将在另一篇文章中详细介绍更广泛的修复方法。
由于我只是为客户端完成的,因此我将详细介绍该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一起工作存在一个主要问题:
数字海洋是 不 不可知区域。 这意味着每个请求的作用域都限定于特定区域,而S3则不然。 这本身不是问题(我们的hack仍然可以使用),但是如果您要实现“完整”功能(不同的区域/存储桶),则需要确保必须使用以下命令调用“ non admin”类每次自定义凭据设置。
-
该hack包括以下内容:
a)更改“ admin”文件以将“端点”用于您的DigitalOcean Spaces区域
b)确保始终设置“ us-east-1”区域
c)更改媒体库中每个已同步附件的“附件URL”
-
第一步是更改“ admin”文件中的“ default”选项:
从第 34 行开始
./class/wpmfAddonAws3Admin.php
,您将看到为另一个类创建了一组默认设置。 您需要执行以下操作: - 将“区域”更改为“ us-east-1”
- 添加行
"endpoint" => "https://[[REGION]].digitaloceanspaces.com"
在上述情况下,我们的“区域”是AMS3。 这可能会有所不同,具体取决于您保留空间的位置。
更改此代码实际上并没有多大用处,但是可以确保每次都使用相同的默认值(并且设置了“端点”,这是整个hack的基础)。
-
完成此操作后,我们转到另一个类文件
./class/wpmfAws3.php
:如前所述,每次“ admin”类希望与S3 / DO通信时都会调用此方法。
我们在这里要做的是“欺骗”端点,这意味着我们对其进行硬编码。 这将更改 AWS SDK 发送请求的 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)中完成的:
我不确定这些功能中的哪一个真正提供了功能(我相信是#2048),但是无论如何我都更改了它们。
最终,您要做的就是将AWS链接更改为DigitalOcean。 对此黑客有效的工具如下:
#2057返回'https://'。 $ infos ['Bucket']。 '.ams3.digitaloceanspaces.com /'。 str_replace('','%20',$ infos ['Key']));
这会更改 WP 媒体与 DigitalOcean Spaces 的“链接”,该链接应显示在您网站的后端和前端。
--
我将在另一篇文章中详细介绍更广泛的修复方法。
2. “充分”
如上所述,“完整”修复取决于DigitalOcean与AWS开发工具包的接口方式。
简而言之,S3允许您“连接”然后在任何区域中选择一个存储桶。 DigitalOcean仅允许您与 单 区域。
如果要实现插件的全部功能(使用DigitalOcean),则需要在“ admin”类中进行很多自定义。 基本上,您需要确保将每个请求都限定在正确的端点范围内,这既耗时又非常昂贵(就API连接而言)。
-
尽管有些松散,但我们已经“做到”了。 我在这里写这篇文章是作为分享进度的一种方式,也许其他人会更喜欢它或其他东西。
--
您需要做4件主要事情才能使其分别工作:
1.创建一个单独的“ DigitalOcean” UI流程
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.要用DO替换S3,您需要确保拥有一套完全不同的文件和队列设置,以确保两个系统不冲突。
这需要做很多事情,主要是创建一组新的“ admin”和“ connection”类。 我不会深入探讨如何执行此操作,但是您基本上想创建一组新的类,这些类创建自己的配置设置,并使用这些设置连接到DO的端点:
-
3.跨区域支持。
如以上文章所述,DO的系统与S3的工作方式不同,因为每个请求的范围都限于特定区域(S3的区域不可知)。
这意味着,如果要使用其他区域的存储桶/空间,则需要进行一些魔术操作才能使其全部正常工作。
我时间不多了,所以这里不介绍全部内容,但是会说,如果您想使系统正常运行,则需要在后端编辑“ ./class/wpmfDo.php”文件-确保您能够传递您希望为以下目的调用SDK实例的“端点”:
这使我们能够定义不同的“端点”(“区域”
当您需要列出不同的空间等时。
当您要列出可用的存储桶时,一个很好的例子就是:
要实现上述目的,您需要循环浏览DO中所有可用的区域,然后创建一个新的可用存储区阵列。 如您所见,这是创建一个棘手的解决方案:
这将从不同区域(而不仅仅是您用于连接的区域)中创建$ list_buckets变量。
-
4. 还没有这样做过
基本上,即使存在S3,您也需要能够使DigitalOcean与S3一起使用。
这将需要使“同步”功能正常工作以及许多其他事情,而我还没有完成。
如上所述,“完整”修复取决于DigitalOcean与AWS开发工具包的接口方式。
简而言之,S3允许您“连接”然后在任何区域中选择一个存储桶。 DigitalOcean仅允许您与 单 区域。
如果要实现插件的全部功能(使用DigitalOcean),则需要在“ admin”类中进行很多自定义。 基本上,您需要确保将每个请求都限定在正确的端点范围内,这既耗时又非常昂贵(就API连接而言)。
-
尽管有些松散,但我们已经“做到”了。 我在这里写这篇文章是作为分享进度的一种方式,也许其他人会更喜欢它或其他东西。
--
您需要做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文件(主要/原始插件):
第二个是./class/class-wp-folder-option.php:
这将使用各种DigitalOcean设置填充选项卡。
-
2.要用DO替换S3,您需要确保拥有一套完全不同的文件和队列设置,以确保两个系统不冲突。
这需要做很多事情,主要是创建一组新的“ admin”和“ connection”类。 我不会深入探讨如何执行此操作,但是您基本上想创建一组新的类,这些类创建自己的配置设置,并使用这些设置连接到DO的端点:
-
3.跨区域支持。
如以上文章所述,DO的系统与S3的工作方式不同,因为每个请求的范围都限于特定区域(S3的区域不可知)。
这意味着,如果要使用其他区域的存储桶/空间,则需要进行一些魔术操作才能使其全部正常工作。
我时间不多了,所以这里不介绍全部内容,但是会说,如果您想使系统正常运行,则需要在后端编辑“ ./class/wpmfDo.php”文件-确保您能够传递您希望为以下目的调用SDK实例的“端点”:
这使我们能够定义不同的“端点”(“区域”

当您要列出可用的存储桶时,一个很好的例子就是:
要实现上述目的,您需要循环浏览DO中所有可用的区域,然后创建一个新的可用存储区阵列。 如您所见,这是创建一个棘手的解决方案:
这将从不同区域(而不仅仅是您用于连接的区域)中创建$ list_buckets变量。
-
4. 还没有这样做过
基本上,即使存在S3,您也需要能够使DigitalOcean与S3一起使用。
这将需要使“同步”功能正常工作以及许多其他事情,而我还没有完成。
Ť
2年前
·
#18122您好,
此功能最近已在插件中实现。
请参阅下面的详细信息。 干杯,
此功能最近已在插件中实现。

请参阅下面的详细信息。 干杯,
- 页 :
- 1
目前还没有回复。