moderntribe / tribe-storage
WordPress 插件,用于将文件上传到多种不同的存储类型,如 Azure、s3、DO 空间
Requires
- php: >=7.4
- intervention/image: ^2.5
- jhofm/flysystem-iterator: ^2.2
- league/flysystem-azure-blob-storage: ^1.0
- league/flysystem-cached-adapter: ^1.1
- moderntribe/flysystem-stream-wrapper: ^2.0
- php-di/php-di: ^6.0
- symfony/lock: ^5.2
Requires (Dev)
- ext-exif: *
- brain/monkey: 2.*
- moderntribe/coding-standards: ^2.0
- nunomaduro/collision: ^5.10
- php-mock/php-mock-mockery: ^1.3
- phpunit/phpunit: ^9
- wp-cli/wp-cli-bundle: ^2.4
This package is auto-updated.
Last update: 2024-08-30 20:58:05 UTC
README
此 WordPress 插件作为 Flysystem 适配器(v1)在 WordPress 中使用的桥梁。此插件旨在由 开发者 安装和配置,因为它没有图形用户界面。
当前支持的适配器
建议
强烈建议在多站点安装中将您的 WP_CONTENT_URL
设置为基础站点。
在 wp-config.php
function tribe_isSSL(): bool { return ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' ); } $host = $_SERVER['HTTP_HOST'] ?? 'localhost'; define( 'WP_CONTENT_URL', ( tribe_isSSL() ? 'https' : 'http' ) . '://' . $host . '/wp-content' );
安装
要求
- PHP7.4+
- WordPress 5.6+
- Composer
- Composer 安装器
- 服务器应具有编译了 ImageMagick 或 GD 的 PHP。
使用 Composer v1 安装
将以下内容添加到 composer.json 中的 repositories 对象
"repositories": [ { "type": "vcs", "url": "git@github.com:moderntribe/flysystem-stream-wrapper.git" }, { "type": "vcs", "url": "git@github.com:moderntribe/tribe-storage.git" }, ]
然后运行
composer require moderntribe/tribe-storage
适配器
适配器允许不同的接口用于不同的存储服务提供商。为了告诉系统使用哪个适配器,请将一个 TRIBE_STORAGE_ADAPTER
define() 添加到 wp-config.php
中,并使用适配器的命名空间路径(与 Class_Name::class 的输出相同),例如,要使用 Azure 存储适配器
define( 'TRIBE_STORAGE_ADAPTER', 'Tribe\Storage\Adapters\Azure_Adapter' );
本地适配器
这是默认适配器,指向 WP_CONTENT_DIR . /uploads
。如果您没有配置任何自定义适配器,它将自动使用,并且应该与 WordPress 默认行为完全相同。
注意:配置错误的适配器将始终使用本地适配器,并在 WordPress 控制台显示通知。
Azure 存储适配器
要配置此适配器,请将以下定义添加并自定义到您的 wp-config.php
// Account name as you created it in the Azure dashboard. define( 'MICROSOFT_AZURE_ACCOUNT_NAME', 'account' ); // Account secret key to authenticate. define( 'MICROSOFT_AZURE_ACCOUNT_KEY', 'key' ); // The container name. define( 'MICROSOFT_AZURE_CONTAINER', 'my_container' ); // The custom adapter namespaced path to the adapter. define( 'TRIBE_STORAGE_ADAPTER', 'Tribe\Storage\Adapters\Azure_Adapter' ); // The URL/CNAME to use for the adapter. define( 'TRIBE_STORAGE_URL', 'https://example.com/wp-content/uploads/' . MICROSOFT_AZURE_CONTAINER );
图像编辑器自定义
如果 Imagick 或 GD 遇到问题(如无日志的 500 错误),则强制使用自定义图像编辑器策略。
// For GD define( 'TRIBE_STORAGE_IMAGE_EDITOR', 'gd' ); // For Imagick define( 'TRIBE_STORAGE_IMAGE_EDITOR', 'imagick' );
缓存
数据库缓存(默认)
缓存通过 WordPress transients 保存,即使外部对象缓存可用,也会自动强制使用数据库。不幸的是,Flysystem 缓存适配器将整个输出保存到一个单个键中。
如果您使用 Redis 或 Memcached(限制大于 1mb),您可以使用以下方式禁用此功能:
// Store transients in the object cache instead of the database. add_filter( 'tribe/storage/config/cache/force_db', '__return_false' );
禁用缓存
如果您遇到缓存问题,您可以通过向 wp-config.php
添加以下内容来禁用它:
define( 'TRIBE_STORAGE_NO_CACHE', true );
自动测试
通过 PHPUnit 和 Brain Monkey 测试套件提供测试。
运行单元测试
$ composer install $ ./vendor/bin/phpunit
添加 Flysystem 适配器
创建一个 Flysystem 桥接器。请参阅 /src/Adapters/Adapter.php。
Adapter::get(): AdapterInterface;
get() 方法应返回一个配置好的 Flysystem 适配器。