SQL запросы и перенос WordPress

Перенося сайт с локального или тестового сервера на «боевой» или наоборот, создание тестовых копий сайтов на субдоменах и подобные перемещения сайтов не могут обойтись без использования SQL запросов.

Иногда эту функцию можно доверить плагину, но бывают случаи, когда без «ручного» переноса не обойтись.

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

Основных запросов три но можно добавить и четвертый запрос, но о нем чуть позже. Итак, http://old.ru — старый домен, https://new.ru — новый.

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

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

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

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

Замена site_url и home_url

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

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://old.ru', 'https://new.ru') WHERE option_name = 'home' OR option_name = 'siteurl';

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

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

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://old.ru', 'https://new.ru');

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

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

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://old.ru', 'https://new.ru');

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

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

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

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

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

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

UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://old.ru', 'https://new.ru');
UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://old.ru', 'https://new.ru');