Мне, как разработчику сайтов, очень часто приходится этим заниматься — переносить сайты с локального и тестового серверов, а также и наоборот, создавать тестовые копии сайтов на субдоменах.
Как ни странно, каждый разработчик осуществляет перенос по-своему, есть и такие, которые вручную меняют значения в базе данных.
Что касается меня, то каждую задачу я пытаюсь максимально упростить и максимально ускорить. Поэтому вы можете пропустить теоретическую часть описания SQL-запросов и сразу перейти к инструменту, который вам сгенерирует их автоматически.
Описание запросов SQL
Вообще основных запросов три (на скриншоте есть и четвертый запрос, но о нем чуть позже). Итак, http://test.truemisha.ru
— старый домен, https://misha.blog
— новый.
Названия таблиц базы данных WordPress имеют префиксы. По умолчанию это wp_
, но на вашем сайте префикс может быть абсолютно каким угодно, например таблица wp_posts
у вас может называться misha_posts
или hjkpoiposts
, учтите это.
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://test.truemisha.ru', 'https://misha.blog') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://test.truemisha.ru', 'https://misha.blog'); UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://test.truemisha.ru','https://misha.blog'); |
Для того, чтобы выполнить эти запросы, вам нужно выбрать базу данных в phpMyAdmin, перейти на вкладку SQL, вставить запросы в поле и нажать ок.
Вкратце рассмотрим каждый из запросов по отдельности.
Замена site_url и home_url
WordPress хранит значения абсолютного URL сайта в базе данных в таблице wp_options
. Если их не поменять, то при переходе по ссылкам внутри сайта вас будет постоянно перенаправлять на старый домен.
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://test.truemisha.ru', 'https://misha.blog') 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.blog'); |
Значения произвольных полей постов
Не всегда нужен, но если вы лишний раз запустите этот запрос, ничего плохого не случится.
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://test.truemisha.ru','https://misha.blog'); |
Для чего нужны guid?
Используются для RSS как глобальный идентификатор (больше кстати не используются нигде).
Так что же делать с guid? Тут есть два случая:
- Если вы переносите сайт с локального сервера — меняем все значения guid:
UPDATE wp_posts SET guid = REPLACE (guid, 'http://10.0.0.32', 'https://misha.blog');
- Если же сайт уже находился в интернете, а вы просто решили поменять домен — меняем guid только для вложений:
UPDATE wp_posts SET guid = REPLACE (guid, 'http://test.truemisha.ru', 'https://misha.blog') WHERE post_type = 'attachment';
Ссылки в комментариях
Вполне возможно, что в комментариях оставлялись внутренние ссылки на какие-либо посты или страницы сайта — значит для комментов тоже будет свой SQL-запрос.
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://test.truemisha.ru', 'https://misha.blog'); UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://test.truemisha.ru', 'https://misha.blog'); |
Источник: misha.blog