subcat-1-5638479

13 сентября 2019 WordPress MySQL

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

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

Шаг 1. Перенос файлов сайта и базы данных WordPress

Тут все просто: архивируем файлы сайта и делаем экспорт базы данных через phpMyAdmin или Adminer. Разворачиваем архив на новом сервере и импортируем базу данных аналогично экспорту. При импорте и экспорте ничего настраивать не надо, оставляем настройки предложенные по умолчанию.

Шаг 2. Изменение настроек для базы данных в wp-config.php

Открываем файл конфигурации wp-config.php из корня сайта и меняем значения имени базы данных, имени пользователя и пароль. Имя сервера чаще всего остается localhost, либо меняем его на новое.

/** Имя базы данных для WordPress */
define( 'DB_NAME', 'название_базы' );

/** Имя пользователя MySQL */
define( 'DB_USER', 'имя_пользователя' );

/** Пароль к базе данных MySQL */
define( 'DB_PASSWORD', 'пароль' );

/** Имя сервера MySQL */
define( 'DB_HOST', 'localhost' );

Шаг 3. Выполнить SQL-запросы

Все в том же phpMyAdmin нужно выбрать используемую базу данных и перейти во вкладку SQL. Далее необходимо выполнить 3 основных запроса к базе данных для изменения старого домена на новый, где http://beta.it-blog.ru — имя старого домена, https://it-blog.ru — имя нового домена с указанием протокола.

screenshot_1-1024x479-2785696

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

Это основные манипуляции для переноса, но в базе данных по прежнему могут остаться данные старого домена. Поэтому нужно сделать еще несколько запросов.

Обновляем guid

guid используется как глобальный идентификатор в RSS.

Аналогично предыдущим 3 запросам выполняем еще один. Если перенос осуществляется с локального сервера, то меняем все значения guid:

UPDATE wp_posts SET guid = REPLACE (guid, 'http://beta.it-blog.ru', 'https://it-blog.ru');

Если не с локального, то необходимо поменять guid только у вложений:

UPDATE wp_posts SET guid = REPLACE (guid, 'http://beta.it-blog.ru', 'https://it-blog.ru') WHERE post_type = 'attachment';

Обновляем старый домен в комментариях

Ссылки на старый домен могут остаться в комментариях, поэтому делаем еще пару запросов:

UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://beta.it-blog.ru', 'https://it-blog.ru');
UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://beta.it-blog.ru', 'https://it-blog.ru');

На этом можно было бы закончить, но в базе могут остаться и другие таблицы с указанием старого домена. Можно проверить это воспользовавшись поиском в phpMyAdmin. В строку поиска вводим имя старого домена и выбираем все таблицы.

screenshot_2-1024x504-5817853

от admin