Создание резервной копии БД WordPress
Задача: скопировать всю БД с WordPress, чтобы перенести на другой хостинг. Существует несколько способов решения. Например, с помощью команды mysqldump (предварительно зайдя на SSH хостера):
mysqldump db_name -u user -ppassword > dump.sql
А можно воспользоваться многочисленными плагинами для самого WordPress. Однако, для моего случая ничего не помогло.
Условия: дурацкий хостинг, где вроде бы кодировка стоит и UTF8, однако в базе всё равно полная каша. Но стоит заметить, что на сайте всё отображается прекрасно.
Поэтому я решил написать небольшой php-скрипт для создания резервной копии БД WordPress, основанный на внутренних функциях и API по работе с базой.
Сначала подключаются файлы WordPress:
require(dirname(__FILE__) . '/wp-config.php'); include_once(dirname(__FILE__) . '/wp-includes/wp-db.php');
Для получения списка всех таблиц используется обычный SQL-запрос:
$table = $wpdb->get_col("SHOW TABLES");
Запрос для формирования создания таблицы:
$name = $wpdb->get_row("SHOW CREATE TABLE $table[$table_i]",ARRAY_A); echo $name["Create Table"];
Для получения результата и для получения названия всех столбцов, используется соответственно get_results и get_col_info:
$results = $wpdb->get_results("SELECT * FROM $table[$table_i]", ARRAY_N); $col_info = $wpdb->get_col_info('name', -1); $col_str = ''; foreach ($col_info as $col) { $col_str .= "`$col`,"; }
Вот, в принципе, и всё, что необходимо. Чтобы сделать резервную копию, разместите файл в корень WordPress (там, где находится wp-config.php): wordpress-backup.phps (или wordpress-backup.zip).
Плюс этого метода в том, что если на сайте всё отображается хорошо, то и резервную копию вы получите правильную.
Связанные записи:
- WordPress и lighttpd Мы поставили WordPress не на Apache, как это обычно бывает,...
Коммент.(2)
Было бы хорошо, если еще и была запись в файл на хостинге:)
А что делать, если есть база данных, купленная для WP, но при импорте сразу вопросительные знаки выводяться