WP-CLI и размещение на сервере
Панель управления удобна, пока сайт один. Обновить двадцать плагинов, создать сотню тестовых записей, перенести сайт с компьютера на сервер быстрее из терминала. Для этого есть WP-CLI — программа для управления WordPress командами.
Основные команды
wp core version
wp core update
wp plugin list
wp plugin install query-monitor --activate
wp plugin update --all
wp theme activate mytheme
wp user create anna anna@example.com --role=editor
wp cache flushКоманды выполняют в папке сайта.
Записи и настройки
wp post create --post_type=book --post_title="Новая книга" --post_status=publish
wp post list --post_type=book --fields=ID,post_title
wp post generate --count=50
wp option get blogname
wp option update blogdescription "Сайт о книгах"wp post generate создаёт тестовые записи — удобно для проверки вёрстки и постраничного вывода.
База данных
wp db export backup.sql
wp db import backup.sql
wp db query "SELECT COUNT(*) FROM wp_posts"Свои команды
Плагин может добавить собственную команду:
// books.php
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('books recount', function () {
$count = wp_count_posts('book')->publish;
update_option('books_total', $count);
WP_CLI::success("Книг: $count");
});
}wp books recountПеренос сайта
Сайт WordPress — это файлы и база данных. Порядок переноса:
- Скопировать файлы на сервер: Git для своей темы и плагинов, остальное — архивом или
rsync. - Выгрузить базу (
wp db export) и загрузить её на сервере (wp db import). - Создать на сервере
wp-config.phpс данными его базы. - Заменить в базе старый адрес сайта на новый.
- Сбросить кеш и правила адресов.
Замена адреса
Адрес сайта записан в базе в сотнях мест. Его меняет одна команда:
wp search-replace 'http://blog.test' 'https://example.com' --skip-columns=guid
wp rewrite flush
wp cache flushСначала полезно посмотреть, что изменится, добавив ключ --dry-run.
Настройки рабочего сайта
// wp-config.php
define('WP_ENVIRONMENT_TYPE', 'production');
define('WP_DEBUG', false);
define('DISALLOW_FILE_EDIT', true);
define('WP_POST_REVISIONS', 10);
define('DISABLE_WP_CRON', true);| Настройка | Зачем |
|---|---|
WP_DEBUG | Ошибки не показываются посетителям |
DISALLOW_FILE_EDIT | В панели нет редактора кода тем и плагинов |
WP_POST_REVISIONS | База не разрастается из-за истории правок |
DISABLE_WP_CRON | Задачи запускает системный cron |
Ключи безопасности (AUTH_KEY и другие) на сервере должны быть своими — их выдаёт команда wp config shuffle-salts.
После переноса
Проверьте сайт по списку: открываются внутренние страницы, загружаются картинки, работает вход в панель, отправляются письма, включён HTTPS. И настройте регулярные резервные копии файлов и базы — до первого сбоя, а не после.
Частая ошибка
Заменять адрес сайта обычным поиском и заменой в файле SQL нельзя. WordPress хранит часть настроек в сериализованном виде, где записана длина каждой строки: s:16:"http://blog.test". Новый адрес другой длины, и такие записи становятся нечитаемыми — пропадают виджеты и настройки темы. wp search-replace пересчитывает длины правильно.