WP-CLI позволяет автоматизировать административные задачи WordPress через консоль. Собственная команда полезна для безопасной диагностики, миграций и операций, которые неудобно проводить через веб-интерфейс. Начните с команды только для чтения, а не с массового изменения данных.
Простой пример
Ниже консольная команда wp wpr8 status, выводящая имя сайта. Она регистрируется только при доступном WP-CLI, чтобы обычные HTTP-запросы не зависели от консольного пакета.
<?php
/** Plugin Name: Example CLI Status */
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'wpr8 status', function () {
WP_CLI::success( 'Сайт: ' . get_bloginfo( 'name' ) );
} );
}
После установки на staging выполните в каталоге WordPress:
wp wpr8 status
Команда должна вернуть сообщение без изменения БД. Если WP-CLI отсутствует, это не должно мешать загрузке сайта.
Что продумать до команды с изменением данных
- Добавьте
--dry-run, который показывает будущие действия без записи. - Проверяйте наличие объекта и повторный запуск: одинаковая команда не должна создавать дубли.
- Возвращайте понятный код завершения; не сообщайте об успехе до фиксации изменений.
- Не печатайте токены, пароли и персональные данные в терминал или CI-лог.
- Ограничьте доступ к shell/SSH и окружению; запуск WP-CLI часто обладает высокими серверными правами и не равен пользовательской авторизации в админке.
- Делайте резервную копию перед пакетными обновлениями и миграциями.
Диагностика
Если команда не зарегистрирована, проверьте, что плагин активен, вызывается нужный WordPress-контекст и процесс запуска действительно использует WP-CLI. Если команда выполняется на другом сайте мультисайта, проверьте --url и параметры среды. Для нестандартной среды могут потребоваться настройки WP-CLI и правильный путь к WordPress.
Следующий шаг
Для небольших действий по расписанию используйте WP-Cron, а для проверяемых массовых изменений — отдельную WP-CLI команду с --dry-run, логом и тестами.
Источник: https://make.wordpress.org/cli/handbook/guides/commands-cookbook/
Материал был полезен?
Помогите нам сделать материалы точнее и понятнее.