Часто, при работе с контекстной рекламой для малого бизнеса, есть необходимость быстро перекидывать сайт WordPress c хостинга на хостинг или делать копию сайта на текущем хостинге, со сменой доменного имени.
На первый взгляд простая задача, ибо в интернете «куча» материалов на эту тему. Но в них либо технически сложно, либо семантически непонятно, либо с ошибками, либо информация неполная.
Простой алгоритм переноса (без танцев с бубнами) выглядит так
- Копируем файлы и базу данных текущего сайта
- Переносим их (файлы и БД) на новый хостинг или меняем домен на текущем хостинге, например с otkuda.ru на kuda.ru
- Меняем через SQL запрос в БД otkuda.ru на kuda.ru
- Меняем в админке ВП домен на kuda.ru
- Проверяем, чтобы префикс таблиц базы данных был одинаковый на новом и старом сайте, если отличается, то лучше поменять в файле wp-config.php нового сайта на новый префикс, например на ws_ (вместо wp_)
- Подключаем ssl сертификат
- Проверяем версию php нового хостинга (должны быть такая же как на старом сайте)
- Меняем в таблице wp_site (либо wp_blogs) домены всех сайтов на новые ручками, если сайтов конечно не 50 штук.
- Сайт работает, используем для работы
SQL запрос замены домена для обычного WordPress сайта:
UPDATE wp_options SET option_value = REPLACE(option_value, 'https://otkuda.ru', 'https://kuda.ru') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'https://otkuda.ru','https://kuda.ru'); UPDATE wp_posts SET post_content = REPLACE (post_content, 'https://otkuda.ru', 'https://kuda.ru'); UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'https://otkuda.ru','https://kuda.ru');
SQL запрос замены домена для мульти сайта WordPress (когда с одной папки и БД подгружаются несколько сайтов — делаем для каждого домена отдельно:
UPDATE wp_1_options SET option_value = REPLACE(option_value, 'https://otkuda1.ru', 'https://kuda1.ru') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_1_posts SET guid = replace(guid, 'https://otkuda1.ru','https://kuda1.ru'); UPDATE wp_1_posts SET post_content = REPLACE (post_content, 'https://otkuda1.ru', 'https://kuda1.ru'); UPDATE wp_1_postmeta SET meta_value = REPLACE (meta_value, 'https://otkuda1.ru','https://kuda1.ru');
UPDATE wp_2_options SET option_value = REPLACE(option_value, 'https://otkuda2.ru', 'https://kuda2.ru') WHERE option_name = 'home' OR option_name = 'siteurl';</span> <pre>UPDATE wp_2_posts SET guid = replace(guid, 'https://otkuda2.ru','https://kuda2.ru'); UPDATE wp_2_posts SET post_content = REPLACE (post_content, 'https://otkuda2.ru', 'https://kuda2.ru'); UPDATE wp_2_postmeta SET meta_value = REPLACE (meta_value, 'https://otkuda2.ru','https://kuda2.ru');
UPDATE wp_3_options SET option_value = REPLACE(option_value, 'https://otkuda3.ru', 'https://kuda3.ru') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_3_posts SET guid = replace(guid, 'https://otkuda3.ru','https://kuda3.ru'); UPDATE wp_3_posts SET post_content = REPLACE (post_content, 'https://otkuda3.ru', 'https://kuda3.ru'); UPDATE wp_3_postmeta SET meta_value = REPLACE (meta_value, 'https://otkuda3.ru','https://kuda3.ru');
и далее по всем сайтам.
Возможные трудности:
- не замена всех доменов, так как скрипты выше меняют домены с https протоколом, забывая, что могу встречаться домен в БД и с http протоколом и вообще без протокола
- поэтому проверяем, и выполняем скрипты с http протоколом и без протокола
- могут быть трудности с путями в картинкам, если пути, где лежат картинки старого и нового сайта отличаются