ворд-пресс.рф
Разработка

Своя команда WP-CLI в WordPress-плагине: проверка и запуск

Создание безопасной консольной команды WP-CLI и правила запуска, вывода и проверки прав доступа.

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/

Материал был полезен?

Помогите нам сделать материалы точнее и понятнее.