ED Yandex S3 Media
WordPress‑плагин для оффлоада загрузок медиабиблиотеки в Yandex Cloud Object Storage
by Ed Shpigel · github.com/edshpigel/ed-yandex-s3-media · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/edshpigel/ed-yandex-s3-media/archive/refs/heads/main.zipWordPress‑плагин для оффлоада загрузок медиабиблиотеки в Yandex Cloud Object Storage (S3‑совместимый API) с подписью AWS Signature Version 4.
- Автор: Ed Shpigel —
https://t.me/edshpigel - Версия: 0.1.0
Возможности
- Загрузка в S3: автоматически выгружает оригинальный файл и все сгенерированные размеры изображений.
- Подмена URL: ссылки на вложения и миниатюры начинают указывать на Object Storage.
- Проверка доступа: кнопка Test connection выполняет подписанный запрос к бакету.
- Опции:
- Prefix для хранения в “папке” внутри бакета
- ACL
public-read(опционально) - удаление локальных файлов после успешной загрузки (опционально)
- debug‑лог в
error_log(опционально)
Установка
- Скопируйте папку плагина в:
wp-content/plugins/ed-yandex-s3-media/
- Активируйте плагин в админке WordPress → Плагины.
Настройка
Откройте Настройки → Yandex S3 Media и заполните:
- AWS_KEY_ID (key_id): идентификатор статического ключа доступа
- AWS_SECRET_KEY (secret): секретный ключ
- Bucket: имя бакета
- Region: по умолчанию
ru-central1 - Endpoint: обычно
https://storage.yandexcloud.net - Base URL: используется для формирования публичных URL (обычно тот же
https://storage.yandexcloud.net) - Prefix (опционально): например
uploads(будет добавлен перед путём изwp-content/uploads) - ACL public-read: включайте только если хотите публичную раздачу файлов без подписи
- Удалять локальные файлы: включайте только если уверены, что весь медиаконтент должен храниться только в S3
- Debug log: пишет сообщения в
error_log
Далее нажмите Test connection, и после успешной проверки включите “Включить оффлоад”.
Как это работает
Загрузка
Плагин использует хук wp_update_attachment_metadata и после генерации метаданных:
- выгружает оригинальный файл
- выгружает все размеры из
metadata['sizes'](thumbnail/medium/large и т.д.) - сохраняет в метаданные вложения:
_ed_yandex_s3_media_offloaded=1_ed_yandex_s3_media_bucket=<bucket>_ed_yandex_s3_media_keys= массив ключей (original + sizes)
Подмена URL
wp_get_attachment_url— подменяет URL оригиналаimage_downsize— подменяет URL конкретного размера изображения
Удаление
При удалении вложения (delete_attachment) плагин пытается удалить объект(ы) из бакета (DELETE Object).
Важные нюансы
- Бакет с точками в имени (например
example.ru): для HTTPS рекомендуется path‑style URL- т.е.
https://storage.yandexcloud.net/<bucket>/<key>— именно так формирует URL этот плагин.
- т.е.
- Публичность:
- если выключен
public-read, браузер не сможет скачать файл напрямую без подписи/прокси — используйтеpublic-read, либо расширяйте плагин (например, на presigned URLs).
- если выключен
- Delete local:
- если включить удаление локальных файлов, WordPress больше не будет иметь файлы на диске (кроме БД/метаданных), что влияет на плагины, которые ожидают локальные пути.
Лицензия
GPL-2.0-or-later — см. файл LICENSE.txt.