Перейти к основному содержанию

Дополнение WP Media Folder: интеграция с Wasabi

1. Как создать пользователя Wasabi и новый API‑ключ?

Войдите в Управление Wasabi и перейдите в раздел Пользователи в левом меню, затем нажмите Создать пользователя кнопку.

 

создать-пользователя-wasabi

 

Шаг 1: Введите ваш Имя пользователя, выберите "Тип доступа: Programматический (создать API‑ключ)", затем нажмите Далее кнопку.

 

username-newuser

 

Шаг 2: Если вы хотите использовать группы пользователей в Wasabi, вы можете выбрать или создать одну, ради краткости мы’ собираемся пропустить этот необязательный шаг и нажать Далее кнопку.

 

group-newuser

 

Шаг 3: Выберите "AmazonS3FullAccess" политику, затем прокрутите вниз и нажмите Далее кнопку.

 

policy-newuser

 

Шаг 4: Нажмите Создать пользователя кнопку, чтобы завершить. 

 

review-newuser

 

Всплывающее окно, включающее Ключ доступа и Секретный ключ появляется. Вы можете скачать, скопировать ключи в буфер обмена или сохранить их где‑то для следующего шага.

 

new-access-key-wasabi

 

Создать новую корзину

Новый бакет можно создать на платформе Wasabi или в плагине WP Media Folder.

Первый способ — создать на сайте Wasabi, перейти к Buckets разделу и нажать на Создать бакет кнопку в правом верхнем углу панели управления. После этого введите название бакета и нажмите кнопку «Создать бакет». Наконец, вы увидите новый бакет в списке.

 

create-bucket-wasabi-platform

 

Второй способ — создать в настройках WP Media Folder. Перейдите к меню Настройки > WP Media Folder > Облако > Выгрузка медиа > Wasabi, нажмите на Параметры корзины и выбор кнопку. В нижней части всплывающего окна введите название корзины и нажмите на Создать кнопку.

 

create-bucket-wp

 

2. Войти в Wasabi из WP Media Folder

Вернитесь к WordPress Thing панели управления и нажмите на меню Настройки > WP Media Folder > Облако > Выгрузка медиа. Далее нажмите Редактировать значок у Выбрать поставщика облака и выберите Wasabi.

 

выбрать-провайдера-облака-wasabi

 

Затем вставьте следующее в поля формы:

  • Идентификатор ключа доступа
  • Секретный ключ доступа

 

заполнить-ключ-wasabi

 

После этого сохраните настройки, и соединение должно быть успешным. Пожалуйста, перейдите к следующему шагу, чтобы узнать возможности Wasabi.

 

3. Как это работает? Что я могу сделать с Wasabi?

Как это работает?

Как только вы' подключили WP Media Folder к Wasabi, пожалуйста, выберите корзину или создайте новую, где будут храниться все ваши данные.

 

выбрать-бакет-wasabi

 

И вы можете включить Копировать в Wasabi опцию, все новые загруженные медиа будут отправлены в Wasabi.

 

копировать-в-wasabi

 

Если вы хотите синхронизировать загруженные медиа перед использованием интеграции Wasabi, нажмите на Синхронизировать с Wasabi кнопку. Затем он отправит всю вашу существующую медиатеку в ваш бакет Wasabi.

Примечание: При выполнении этого действия URL вашего медиа будет заменён на URL Wasabi. Пожалуйста, смотрите пример ниже.
С https://joomunited.com/wp-content/uploads/2019/02/image.jpg до >> https://s3.eu-central-1.wasabisys.com/{bucket}/wp-media-folder-joomunited/wp-content/uploads/2019/02/image.jpg

 

Чтобы выгрузить медиа с вашего сайта, вам следует включить Удалить после загрузки опцию, ваша медиатека будет полностью храниться на Wasabi вместо вашего сервера.

 

remove-after-upload-wasabi

 

Включив Метка вложения опцию, информация о каждом медиа будет отображаться при наведении на метку Wasabi в правом верхнем углу.

 

label-wasabi

 

Когда вы хотите изменить расположение медиа или удалить плагин, нажмите Получить Wasabi Медиа кнопку, затем все ваши медиа будут скопированы из Wasabi в вашу медиатеку. Все прежние ссылки, добавленные в ваш контент, останутся на месте (без битых ссылок).

 

retrieve-media-wasabi

 

Примечание: Вы можете синхронизировать файлы из Wasabi в медиатеку только если они загружены через наш плагин.

Как подключить CDN?

Наш плагин интегрирован с CDN. Было проверено, что Wasabi работает с CDN: Cloudflare, CloudFront,... пожалуйста, перейдите здесь для получения более подробной информации.

После получения вашего собственного домена перейдите к настройкам Wasabi в WP Media Folder и введите его в 'Custom Domain (CNAME)' поле.

 

copy-distribution

 

Пожалуйста, подождите несколько минут, пока изображение полностью загрузится, когда поле «Последнее изменение» изменится с "Deploying" до текущей даты и времени.

Наконец, вы можете увидеть изменения в URL файла поле в каждом изображении.

 

file-url-cdn-wasabi

 

Расширенные настройки и действия

Вы можете выбрать корзину для импорта папок и файлов с сервера Wasabi в вашу медиатеку. Или скопировать все файлы из одной корзины в другую.

 

copy-buckets-wasabi

 

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation' (500 Whoops, looks like something went wrong.)

mysqli_sql_exception

HTTP 500 Whoops, looks like something went wrong.

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

Exception

mysqli_sql_exception

Show exception properties
mysqli_sql_exception {#896
  #sqlstate: "23000"
}
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. public function saveUrls($urls) {
  2. if (empty($urls)) {
  3. return;
  4. }
  5. return $this->_database->saveUrls($urls);
  6. }
  7. public function removeUrls($urls) {
  8. if (empty($urls)) {
  9. return;
  1. if (isset($result->url_translations)) {
  2. Defer::getInstance()->defer(function() use ($result) {
  3. $new_urls = $result->url_translations;
  4. $new_urls = get_object_vars($new_urls);
  5. Database::getInstance()->saveUrls((array)$new_urls);
  6. });
  7. }
  8. if (isset($result->urls_untranslated)) {
  9. Defer::getInstance()->defer(function() use ($result) {
Translation->Linguise\Script\Core\{closure}()
  1. }
  2. public function finalize()
  3. {
  4. foreach ($this->_actions as $action) {
  5. call_user_func($action['function'], $action['args']);
  6. }
  7. }
  8. }
  1. Helper::prepareDataDir();
  2. // Finalize defer actions on shutdown
  3. // @codeCoverageIgnoreStart
  4. register_shutdown_function(function() {
  5. Defer::getInstance()->finalize();
  6. Database::getInstance()->close();
  7. });
  8. // @codeCoverageIgnoreEnd
  9. }
Processor->Linguise\Script\Core\{closure}()

Stack Trace

mysqli_sql_exception
mysqli_sql_exception:
Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

  at /var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170
  at mysqli->query()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170)
  at Linguise\Script\Core\Databases\Mysql->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Database.php:232)
  at Linguise\Script\Core\Database->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Translation.php:119)
  at Linguise\Script\Core\Translation->Linguise\Script\Core\{closure}()
  at call_user_func()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Defer.php:42)
  at Linguise\Script\Core\Defer->finalize()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Processor.php:31)
  at Linguise\Script\Core\Processor->Linguise\Script\Core\{closure}()