SQL-запросы, необходимые для переноса сайта на WordPress на другой домен

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

Как ни странно, каждый разработчик осуществляет перенос по-своему, есть и такие, которые вручную меняют значения в базе данных.

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

Описание запросов SQL

Вообще основных запросов три (на скриншоте есть и четвертый запрос, но о нем чуть позже). Итак, http://test.truemisha.ru — старый домен, https://misha.agency — новый.

Названия таблиц базы данных WordPress имеют префиксы. По умолчанию это wp_, но на вашем сайте префикс может быть абсолютно каким угодно, например таблица wp_posts у вас может называться misha_posts или hjkpoiposts, учтите это.

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://test.truemisha.ru', 'https://misha.agency') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://test.truemisha.ru', 'https://misha.agency');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://test.truemisha.ru','https://misha.agency');

Для того, чтобы выполнить эти запросы, вам нужно выбрать базу данных в phpMyAdmin, перейти на вкладку SQL, вставить запросы в поле и нажать ок.

Вставляем запросы во вкладке SQL в phpMyAdmin

Вкратце рассмотрим каждый из запросов по отдельности.

Замена site_url и home_url

WordPress хранит значения абсолютного URL сайта в базе данных в таблице wp_options. Если их не поменять, то при переходе по ссылкам внутри сайта вас будет постоянно перенаправлять на старый домен.

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://test.truemisha.ru', 'https://misha.agency') WHERE option_name = 'home' OR option_name = 'siteurl';

Поиск и замена в содержимом постов

Тут всё понятно — все ссылки и изображения в содержимом постов WordPress имеют абсолютные URL, а значит — меняем.

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://test.truemisha.ru', 'https://misha.agency');

Значения произвольных полей постов

Не всегда нужен, но если вы лишний раз запустите этот запрос, ничего плохого не случится.

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://test.truemisha.ru','https://misha.agency');

Для чего нужны guid?

Используются для RSS как глобальный идентификатор (больше кстати не используются нигде).

колонка guid в таблице wp_posts

Так что же делать с guid? Тут есть два случая:

  • Если вы переносите сайт с локального сервера — меняем все значения guid:
    UPDATE wp_posts SET guid = REPLACE (guid, 'http://10.0.0.32', 'https://misha.agency');
  • Если же сайт уже находился в интернете, а вы просто решили поменять домен — меняем guid только для вложений:
    UPDATE wp_posts SET guid = REPLACE (guid, 'http://test.truemisha.ru', 'https://misha.agency') WHERE post_type = 'attachment';

Ссылки в комментариях

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

UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://test.truemisha.ru', 'https://misha.agency');
UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://test.truemisha.ru', 'https://misha.agency');

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 16

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал