Правильная замена в базе с помощью Search Replace DB

search-replace

Это одна из самых базовых вещей, о которых Вы должны знать. Интернет пестрит примерами, руководствами, когда для замены чего либо в базе — советуют открыть phpMyAdmin и делать эту замену напрямую или через регулярки. Это неправильно и приводит к потере информации.

Таким же горе-способом рекомендуют менять адреса при переносе сайта в SQL бекапе базы. Часть информации просто потеряется, например, виджеты, настройки многих плагинов, и т.д.

Почему так происходит?

WordPress часть информации хранить в сериализованных массивах, а они зависят от длинны строки. В случае, если при замене напрямую или через поиск и замену в SQL файле Вы производите замену и фраза, на которую Вы меняете больше по количеству символов — этот массив больше не прочитается.

Например:

смена протокола http:// → https:// — это плюс один символ
смена домена http://site.ru → http://newsite.ru — плюс 3 символа

Как правильно сделать замену?

Есть замечательная утилита Search Replace DB, которая поможет сделать замену не нарушив эти самые сериализованные массивы. Это один из первых инструментов, который должен появится у начинающего WordPress разработчика.

Для чего мы её используем?

  • Перенос проекта с локального на рабочий сервер
  • Смена домена у сайта
  • Смена протокола на http на https
  • Смена адресов страниц
  • Смена вообще чего угодно в базе 🙂

Инструкция

Внимание! Перед этим шагом обязательно сделайте бекап!
  1. Скачиваем скрипт Search Replace DB, закачиваем все в секретную папку в корень сайта, например search-replace-secret-42
  2. Файл wp-config.php должен быть уже с правильными доступами к базе, в которой будем делать замену
  3. Открываем наш скрипт в браузере http://вашсайт.ru/search-replace-secret-42/
  4. Заполняем поля в первой строчке
    replace – что мы ищем для замены (старый домен)
    with – на что мы будем заменять (новый домен)
    в большинстве случаев этого достаточно, жмем Dry run, чтобы проверить замену
  5. Проверяем результат ниже. Если замена производится правильно, жмем Live Run и проверяем замену на нашем сайте.
  6. Обязательно! Удаляем папку со скриптом после замены.

Можно использовать регулярные выражения, можно делать замену только по определенным колонкам, таблицам. Сам скрипт достаточно простой, но позволяет без потерь совершать замены в базе.

Если у Вас настроена утилита WP-CLI, позволяющая работать с WP через командную строку, воспользуйтесь следующей командой:

wp search-replace 'olddomain.com' 'newdomain.ru'

Не будет лишним еще раз напомнить про бекапы, не забывайте. На этом все.

Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Сергей
Создаю сайты уже больше 10 лет, с WordPress начал работать в 2008 году. Основатель и руководитель WPShop.ru