Это одна из самых базовых вещей, о которых Вы должны знать. Интернет пестрит примерами, руководствами, когда для замены чего либо в базе – советуют открыть phpMyAdmin и делать эту замену напрямую или через регулярки. Это неправильно и приводит к потере информации.
Таким же горе-способом рекомендуют менять адреса при переносе сайта в SQL бекапе базы. Часть информации просто потеряется, например, виджеты, настройки многих плагинов, и т.д.
Почему так происходит?
WordPress часть информации хранить в сериализованных массивах, а они зависят от длинны строки. В случае, если при замене напрямую или через поиск и замену в SQL файле Вы производите замену и фраза, на которую Вы меняете больше по количеству символов – этот массив больше не прочитается.
Например:
смена протокола http:// → https://
– это плюс один символ
смена домена http://site.ru → http://newsite.ru
– плюс 3 символа
Как правильно сделать замену?
Есть замечательная утилита Search Replace DB, которая поможет сделать замену не нарушив эти самые сериализованные массивы. Это один из первых инструментов, который должен появится у начинающего WordPress разработчика.
Для чего мы её используем?
- Перенос проекта с локального на рабочий сервер
- Смена домена у сайта
- Смена протокола на http на https
- Смена адресов страниц
- Смена вообще чего угодно в базе 🙂
Инструкция
- Скачиваем скрипт Search Replace DB, закачиваем все в секретную папку в корень сайта, например
search-replace-secret-42
- Файл
wp-config.php
должен быть уже с правильными доступами к базе, в которой будем делать замену - Открываем наш скрипт в браузере http://вашсайт.ru/search-replace-secret-42/
- Заполняем поля в первой строчке
replace – что мы ищем для замены (старый домен)
with – на что мы будем заменять (новый домен)
в большинстве случаев этого достаточно, жмем Dry run, чтобы проверить замену - Проверяем результат ниже. Если замена производится правильно, жмем Live Run и проверяем замену на нашем сайте.
- Обязательно! Удаляем папку со скриптом после замены.
Можно использовать регулярные выражения, можно делать замену только по определенным колонкам, таблицам. Сам скрипт достаточно простой, но позволяет без потерь совершать замены в базе.
Если у Вас настроена утилита WP-CLI, позволяющая работать с WP через командную строку, воспользуйтесь следующей командой:
wp search-replace 'olddomain.com' 'newdomain.ru'
Не будет лишним еще раз напомнить про бекапы, не забывайте. На этом все.
Также читайте статью про лучший плагин для переноса всех файлов сайта и базы WordPress All in One WP Migration.
Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.
Не присылают они утилиту. Может вы ее выложите?
Все просто и понятно! Спасибо!
Добрый день.
Сколько будет стоить обновить сайт до актуальной версии WP, с учетом обновления всех установленных плагинов и последующий перенос сайта на другой домен
источник https://artegoart.ru
новый домен https://d5.su
Так же – задача изменить информацию в блоках, в частности адрес и блок “О нас”, 4 мелких блока в центре сайта, заменить гугл-карту на яндекс-карту и поправить некоторые стили
доброго дня. на почту не приходит письмо с утилитой
пункт 5, а если замена не проводится правильно? пишет:
The script encountered an error while running an AJAX request.