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 — имя нового домена с указанием протокола.
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. В строку поиска вводим имя старого домена и выбираем все таблицы.