Как изменить путь медиафайлов в WP

В зависимости от того, поставили ли вы галочку «Помещать загруженные мной файлы в папки по месяцу и году» в настройках WordPress:

Настройка медиафайлы WordPress

    ваши картинки (и прочие медиафайлы) будут расположены:

  • так site.ru/wp-content/uploads/2018/04/image.jpg
  • или так site.ru/wp-content/uploads/image.jpg
    Для изменения пути до медиафайлов например на site.ru/new/image.jpg есть два варианта:

  • прописать все руками и внести изменения в базу SQL (вариант для тех, кто привык все контролировать сам);
  • с помощью плагина.

С помощью плагина

1.
Устанавливаем и активируем плагин WP Original Media Path
с официального депозитария WordPress:

Плагин WP Original Media Path

2.
В панели администрирования Настройки/WP Original Media Path
видим текущий путь до папки с медиафайлами:

Прописываем путь WP Original Media Path

Включаем экспертный режим и прописываем новый путь:

Прописываем новую папку WP Original Media Path

После нажатия кнопки «Сохранить изменения» новая папка автоматически создастся в корневом каталоге …/public_html

В названии новой папки не используем русские и заглавные буквы.

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

3.
Копируем папку …/wp-content/uploads в корень сайта и переименовываем. Сделать это лучше с помощью штатного файлового менеджера хостинга:

Копируем папку uploads

В дальнейшем папку нужно будет только просто переименовать.

4.
Устанавливаем и активируем плагин Better Search Replace
с официального депозитария WordPress:

Плагин Better Search Replace

И хотя автор WP Original Media Path рекомендует для замены в базе данных использовать плагин Search & Replace, у меня на больших базах он «вылетал». К тому же не может напрямую работать с базами, а только через импорт сохраненного файла в SQL-базу. Ну и по мелочи — нет поддержки русского языка. Так что мой выбор — Better Search Replace.
5.
Делаем замену URL в двух таблицах:

  • wp_posts;
  • wp_options.

Обычно хватает одной базы: wp_posts, но в данной теме для описательной части рубрик использовали плагин (для возможности вставлять картинки в рубрики), поэтому подправляем еще и wp_options.

Замена URL в Better Search Replace

6.
Последним шагом — сбрасываем кэш.

Деактивация

Плагин WP Original Media Path можно деактивировать, при этом настройки (и пути) не сбросятся. А вот после удаления плагина все сбросится до дефолтных установок — новые медиафайлы будут создаваться в папке
…/wp-content/uploads.
Старые медиафайлы при этом будут по старому пути и в старой папке.

Делаем руками

1.
Добавим в файл wp-config.php следующую строчку:

define('UPLOADS', 'new');

Не забудьте предварительно создать эту папку и дать ей права на запись.
2.
Переименуем папку контента с wp-content на new.
Для этого определим константы в том же wp-config.php:

define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'].'/new');
define('WP_CONTENT_URL', 'http://'. $_SERVER['HTTP_HOST'] .'/new');
3.
Переименуем папку uploads в new.

4.
Выполним SQL запрос, который поменяет пути к изображениям. Сделать это можно при помощи phpMyAdmin, который должен быть доступен на любом хостинге.

phpMyAdmin

5.
Выбираем нашу базу данных и переходим на на закладку SQL:

Закладка SQL

6.
Вбиваем наш запрос:

UPDATE wp_posts 
SET post_content = REPLACE(post_content,
'http://site.ru/wp-content/uploads/','http://site.ru/new/')

и нажимаем кнопку «Вперед»:

Выполнить SQL запрос

7.
Теперь нужно заменить ссылки на картинки в коллекции медиафайлов внутри админпанели WordPress. Для этого исполняем следующий SQL-запрос:

UPDATE wp_posts 
SET guid = REPLACE(guid,
'http://site.ru/wp-content/uploads/','http://site.ru/new/')
Оцените, пожалуйста, статью, я старался :) (голосов: 5, оценка: 5,00 из 5)

Задайте вопрос в комментариях

одиннадцать − 7 =