WP Manifestindependent plugin directory
manifest / media / ed-yandex-s3-media

ED Yandex S3 Media

WordPress‑плагин для оффлоада загрузок медиабиблиотеки в Yandex Cloud Object Storage

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/edshpigel/ed-yandex-s3-media/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPress‑плагин для оффлоада загрузок медиабиблиотеки в 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 (опционально)

Установка

  1. Скопируйте папку плагина в:
    • wp-content/plugins/ed-yandex-s3-media/
  2. Активируйте плагин в админке 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.