Миграция сайта на WordPress с одного сервера на другой — задача, которая часто вызывает сложности даже у опытных разработчиков. В этой статье мы подробно рассмотрим, как избежать основных проблем при переносе сайта, какие инструменты и плагины использовать, а также приведём примеры кода для автоматизации некоторых этапов.
Подготовка к миграции WordPress: что нужно знать заранее
Перед переносом сайта важно проверить несколько ключевых моментов. Во-первых, убедитесь, что на новом сервере установлена совместимая версия PHP и MySQL, соответствующая требованиям вашей версии WordPress и плагинов. Во-вторых, проверьте наличие необходимых расширений PHP (например, mbstring, curl, zip), так как их отсутствие может привести к ошибкам при работе сайта.
Также стоит заранее определить, как вы будете переносить файлы и базу данных. Для файлов сайта обычно используют SFTP или SSH-ключи, а для базы данных — экспорт через phpMyAdmin или команду mysqldump. Однако, есть более удобные способы с помощью плагинов.
Использование плагинов для миграции WordPress
Самый простой и надёжный способ переноса — использование специализированных плагинов. Рассмотрим два популярных решения:
1. All-in-One WP Migration
Этот плагин позволяет экспортировать весь сайт, включая базу данных, медиафайлы, плагины и темы, в один файл, который затем импортируется на новом сервере. Плюсы — простота и минимальные настройки, минусы — ограничение размера файла в бесплатной версии.
Пример использования:
1. Установите и активируйте плагин на старом сайте.
2. Перейдите в раздел «Экспорт» и сохраните файл экспорта.
3. На новом сервере установите WordPress, затем плагин и импортируйте файл.
4. Проверьте работоспособность сайта и обновите постоянные ссылки.2. Duplicator
Duplicator создаёт архив сайта и пакет установки, который можно загрузить на новый сервер. Этот плагин подходит для сайтов с большим объёмом данных и даёт больше контроля над процессом миграции.
Преимущества — возможность ручной настройки и устранения проблем с путями после переноса, недостаток — требует больше времени на подготовку.
Основные проблемы при миграции и как их решить
После переноса сайта могут возникать ошибки, связанные с некорректными путями, отсутствием медиафайлов или проблемами с базой данных. Вот несколько типичных проблем и решений:
1. Неправильные URL после переноса
Если домен или путь к сайту изменился, в базе данных останутся старые URL, что вызовет ошибки при загрузке страниц и медиа.
Для массовой замены URL используйте плагин Better Search Replace или выполните SQL-запрос:
UPDATE wp_options SET option_value = replace(option_value, 'http://starij-site.ru', 'http://novyj-site.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://starij-site.ru','http://novyj-site.ru');
UPDATE wp_posts SET post_content = replace(post_content, 'http://starij-site.ru', 'http://novyj-site.ru');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://starij-site.ru','http://novyj-site.ru');2. Ошибки подключения к базе данных
Проверьте файл wp-config.php на новом сервере — там должны быть актуальные данные для подключения: имя базы, пользователь, пароль и хост.
Пример функции для автоматической проверки подключения в теме wpcom:
function wpcom_check_db_connection() {
$link = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$link) {
wp_die('Ошибка подключения к базе данных: ' . mysqli_connect_error());
}
mysqli_close($link);
}3. Отсутствие медиафайлов или проблемы с правами доступа
После копирования файлов убедитесь, что папка wp-content/uploads и её содержимое имеют правильные права доступа (обычно 755 для папок и 644 для файлов). Это позволит серверу корректно читать и записывать файлы.
Автоматизация миграции с помощью пользовательских скриптов
Если вы часто переносите сайты или хотите интегрировать процесс миграции в CI/CD, можно написать простой скрипт для экспорта и импорта базы данных с заменой URL.
Пример PHP скрипта для экспорта базы с заменой URL:
<?php
// wpcom-export-db.php
$old_url = 'http://starij-site.ru';
$new_url = 'http://novyj-site.ru';
$db = new mysqli('localhost', 'user', 'password', 'dbname');
if ($db->connect_error) {
die('Ошибка подключения: ' . $db->connect_error);
}
$sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'dbname'";
$tables = [];
$result = $db->query($sql);
while ($row = $result->fetch_assoc()) {
$tables[] = $row['table_name'];
}
$dump = '';
foreach ($tables as $table) {
$res = $db->query("SELECT * FROM `" . $table . "`");
while ($row = $res->fetch_assoc()) {
$values = array_map(function($v) use ($old_url, $new_url) {
return str_replace($old_url, $new_url, $db->real_escape_string($v));
}, $row);
$dump .= "INSERT INTO `$table` (`" . implode('`,`', array_keys($row)) . "`) VALUES ('" . implode("','", $values) . "');\n";
}
}
file_put_contents('dump.sql', $dump);
echo 'Экспорт базы данных с заменой URL завершён.';
?>Такой подход позволяет адаптировать данные под новый домен без ручного поиска и замены.
Рекомендации по тестированию и отладке после миграции
После переноса сайта важно проверить его работоспособность. Для этого:
- Пройдитесь по основным страницам сайта и убедитесь, что контент отображается корректно.
- Проверьте загрузку изображений и медиафайлов.
- Проверьте работу форм и интерактивных элементов.
- Используйте инструменты разработчика в браузере для выявления ошибок JavaScript и проблем с загрузкой ресурсов.
- Проверьте логи ошибок сервера и PHP для выявления скрытых проблем.
Если после миграции вы хотите улучшить производительность, обратите внимание на плагин Clearfy Pro, который поможет оптимизировать ваши настройки и ускорить загрузку сайта.