Здравствуйте, уважаемые читатели сайта Uspei.com. Довольно часто сталкиваюсь с необходимостью внесения каких-либо изменений в тексты (о seo-оптимизиации текстов тут) либо при копировании сайта, например, при создании поддомена для регионального филиала компании клиента требуется сменить регион в домене. В общем много разных случаев и, думаю, у вас эти случаи тоже есть.
Все делают это по-разному – я, например, когда-то делал это вручную на самом сайте (да,да)), кто-то вносит изменения вручную в базе данных.
В настоящее время у меня мания все упрощать и автоматизировать. Это экономит много времени и сил.
Основные запросы SQL для смены домена или данных
У названия таблиц базы данных WordPress есть префиксы. По умолчанию это wp_
, у вас префикс может быть абсолютно любым content_
. Префиксы меняют для безопасности сайта или по другим причинам, но если вы ничего не меняли, то он по любому будет wp_
.
Всего основных запроса SQL для смены домена или данных два, ну можно добавить и третий. Итак, старый домен – http://old.site.ru
новый домен – https://new.site.ru
.
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://old.site.ru', 'http://new.site.ru') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://old.site.ru', 'http://new.site.ru'); UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://old.site.ru','http://new.site.ru');
Вам нужно просто скопировать весь этот код, зайти в phpMyAdmin, кликнуть на вкладку SQL, вставить код в поле и нажать “вперед”.

Давайте подробней разберем каждый из запросов.
Замена абсолютного url сайта в настройках
У WordPress в базе данных в таблице wp_options
хранится абсолютный URL сайта (подробнее о структуре url). Если их не изменить, то потом у вас будут постоянные проблемы в виде перехода на старый адрес сайта при кликах по ссылкам.
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://old.site.ru', 'http://new.site.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
Замена всех ссылок и изображений в самих постах
Второй запрос меняет адреса всех ссылок и изображений в самих постах WordPress.
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://old.site.ru', 'http://new.site.ru');
Значения произвольных полей постов
На всякий случай можно сделать и этот запрос.
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://old.site.ru','http://new.site.ru');
Замена ссылок в комментариях
Иногда бывает, что вы сами или пользователи ставят ссылки на отдельные внутренние страницы или статьи вашего сайта значит их нужно заменить и для этого тоже есть свой SQL-запрос.
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://old.site.ru', 'https://new.site.ru'); UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://old.site.ru', 'https://new.site.ru');
Важно: если у вас домен состоит из символов кириллицы (например, блог.рф), то название домена в SQL-запросах нужно вводить в формате Punycode, то есть именно той кракозяброй, которую вы замечали, когда вводили раньше свой домен куда-нибудь.
Например, у вас сайт блог.рф и вам нужно перенести на него сайт со старого домена. Название вашего домена в формате Punycode будет выглядеть так:
. В таком случае, вам необходимо вводить SQL-запрос:UPDATE wp_posts SET guid = REPLACE(guid, 'http://old.site.ru','http://xn--b1aedoqcfcd1k.ru')