Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

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 — это файлы и база данных. Порядок переноса:

  1. Скопировать файлы на сервер: Git для своей темы и плагинов, остальное — архивом или rsync.
  2. Выгрузить базу (wp db export) и загрузить её на сервере (wp db import).
  3. Создать на сервере wp-config.php с данными его базы.
  4. Заменить в базе старый адрес сайта на новый.
  5. Сбросить кеш и правила адресов.

Замена адреса

Адрес сайта записан в базе в сотнях мест. Его меняет одна команда:

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 пересчитывает длины правильно.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.