Переносили сайт на другой хостинг? Сделали замену в базе на новый домен, а виджеты все пропали?
Все дело в том, что WordPress хранит много данных в сериализованных массивах, в которых нельзя просто так заменить адрес старого сайта на новый, поскольку там же содержится информация о длине строки. Если длина изменится, сериализованные данные могут повредиться. Из-за этого после переноса могут пропасть не только виджеты, но и другие настройки.
Кроме виджетов часто ломаются формы Contact Form 7. Проблемы могут возникнуть и с настройками тем, плагинов и других компонентов, которые хранят данные в базе.
Переносили сайт на другой хостинг? Сделали замену в базе на новый домен, а виджеты все пропали?
Что же делать?
Самый надежный способ, воспользоваться утилиткой Search Replace DB WordPress. Она выполнит «правильную» замену старого домена на новый и корректно обработает сериализованные данные.
- Распаковать в корень сайта, например
/search-replace/ - Перейти в браузере в /search-replace/
- Ввести старый домен в поле Replace, новый домен в поле With
- Запустить Dry Run — проверка без самой замены
- Если не возникло ошибок, запускаем Live Run
Не забудьте сделать бекап базы!
После завершения работы обязательно удалите папку /search-replace/ с сайта. Оставлять его на рабочем сайте небезопасно, поскольку скрипт позволяет вносить изменения в базу данных.
Почему обычная замена в базе не подходит?
Если просто выполнить замену старого домена на новый через phpMyAdmin или SQL-запросом, можно повредить сериализованные данные.
Например, условно WordPress может хранить строку так:
s:18:"old-site.ru";
Здесь 18 — длина строки. Если заменить домен на строку другой длины, это значение тоже должно измениться. Обычный поиск и замена об этом не знает.
Именно поэтому после такой замены WordPress может перестать правильно читать сохраненные настройки — например, виджеты внезапно исчезают или сбрасываются.
Чем еще можно заменить Search Replace DB?
Сейчас есть несколько способов выполнить такую замену.
Если есть доступ к консоли сервера, можно использовать WP-CLI:
wp search-replace 'old-site.ru' 'new-site.ru'
WP-CLI умеет корректно обрабатывать сериализованные данные. Для предварительной проверки можно добавить —dry-run — команда покажет, что будет изменено, но не внесет изменения в базу.
Еще один вариант — плагин Better Search Replace. Он также поддерживает сериализованные данные и имеет режим Dry Run, поэтому может использоваться непосредственно из админки WordPress.
Но если сайт уже перенесен и доступа к админке нет, старый вариант с Search Replace DB остается удобным решением.
Что проверить после переноса?
После замены домена стоит проверить сайт целиком:
- открываются ли страницы и записи;
- работают ли виджеты;
- отображаются ли формы;
- загружаются ли изображения;
- работают ли меню и ссылки;
- не осталось ли ссылок на старый домен.
Также полезно зайти в Настройки > Постоянные ссылки и просто нажать «Сохранить изменения». При переносе это помогает обновить правила ЧПУ. WordPress также рекомендует после миграции проверить оставшиеся упоминания старого URL в базе.
Итоги
Главное при переносе WordPress — не делать обычную замену домена во всей базе, если в ней есть сериализованные данные.
Используйте инструмент, который умеет работать с сериализацией: Search Replace DB, WP-CLI или Better Search Replace. И обязательно сделайте резервную копию базы перед заменой.
БЛАГОДАРЮ! Очень помогло, нужно много сайтов на вордпресс перенести на другой хостинг и пропадали виджеты. Этот способ просто волшебная палочка. Удачи тебе.
Спасибо, помогло.
РЕСПЕКТИЩЕ УВАЖАЕМЫЙ!!!! Я 2е суток е*** с переносом wp сайта, постоянно что-то да прободало… а через эту програмулина в 2 секунды все косяки исправились.
Низкий Вам поклон! И добра в жизни!
Запустил, все ввел, при нажатии «Dry Run» выскакивает ошибка связанная с Ajax…
Спасибо, помогло!
Спасибо за плагин, но я в свое время обратился к хостингу хендихост, чтобы они мне сами всё перенесли, к тому же бесплатно