WP-CLI — это мощный инструмент командной строки для управления сайтами на WordPress. Он позволяет быстро выполнять задачи, которые часто требуют доступа к админке, но гораздо эффективнее через терминал. В этой статье мы подробно рассмотрим, как с помощью WP-CLI можно диагностировать и решать распространённые технические проблемы WordPress, а также приведём конкретные примеры команд и сценариев использования.
Что такое WP-CLI и почему он полезен для разработчиков
WP-CLI (WordPress Command Line Interface) — это набор команд для управления WordPress из консоли. С его помощью можно устанавливать и обновлять плагины, темы, управлять базой данных, выполнять бэкапы, искать и исправлять ошибки, работать с кэшированием и многое другое.
Преимущества использования WP-CLI:
- Скорость выполнения задач без загрузки админки.
- Автоматизация рутинных действий через скрипты.
- Доступ к функциям, которые сложнее реализовать через GUI.
- Удобство при работе на удалённых серверах без интерфейса.
Для начала работы нужна установка WP-CLI. На сайте официального проекта есть подробные инструкции. После установки можно проверить работоспособность командой wp --info.
Диагностика проблем WordPress с помощью WP-CLI
Проверка состояния сайта и обновлений
Первым шагом при выявлении проблем стоит проверить статус сайта и наличие обновлений:
wp core check-update
wp plugin status
wp theme statusЭти команды покажут, есть ли устаревшие компоненты, которые могут вызывать конфликты или баги.
Диагностика проблем с базой данных
Для проверки целостности базы данных и исправления ошибок используйте:
wp db check
wp db repairКоманда wp db check сканирует таблицы на наличие ошибок, а wp db repair пытается их исправить. Это полезно при проблемах с загрузкой сайта или ошибках SQL-запросов.
Отладка и очистка кэша
Многие проблемы связаны с кэшированием. WP-CLI может управлять кэшами некоторых плагинов или системных слоёв:
- Для плагина Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wpdebug.ru&utm_medium=article&utm_campaign=kak-ispolzovat-wp-cli-dlya-resheniya-problem-wordpress) можно сбросить кэш командой
wp clearfy cache clear(при наличии поддержки WP-CLI). - Для стандартного объектного кэша можно использовать
wp cache flush.
Если кэш не очищается, это может приводить к отображению старого контента или ошибкам авторизации.
Практические примеры решения проблем с WP-CLI
Удаление неиспользуемых плагинов и тем
Чтобы быстро удалить все неактивные плагины и темы, можно выполнить:
wp plugin delete $(wp plugin list --status=inactive --field=name)
wp theme delete $(wp theme list --status=inactive --field=name)Это помогает поддерживать чистоту и уменьшать вероятность конфликтов.
Восстановление прав доступа и файлов
Проблемы с правами доступа часто вызывают ошибки загрузки файлов и работы сайта. Команда для установки рекомендуемых прав:
wp debug_set_permissions() {
find . -type d -exec chmod 755 {} \;;
find . -type f -exec chmod 644 {} \;;
chown -R www-data:www-data .
}
# Вызов функции в терминале
wp debug_set_permissionsЗамените www-data:www-data на пользователя веб-сервера вашего хостинга.
Поиск и удаление спам-комментариев
Накопление спама замедляет работу базы данных. Для удаления всех спам-комментариев:
wp comment delete $(wp comment list --status=spam --field=ID) --forceЭто освобождает место и уменьшает нагрузку на сайт.
Расширение возможностей WP-CLI с помощью плагинов
Некоторые плагины добавляют собственные команды WP-CLI. Например, плагин Expert Review добавляет команды для управления отзывами напрямую из консоли.
Чтобы посмотреть список всех доступных команд, используйте:
wp helpДля поиска команд по плагину:
wp help | grep expertТаким образом, можно значительно ускорить управление сайтом и автоматизировать задачи.
Как создать собственные WP-CLI команды для решения специфичных задач
Если стандартных команд недостаточно, можно написать свои. Для этого создайте PHP-файл с описанием команды и зарегистрируйте её в WP-CLI.
Пример простой команды для очистки всех черновиков:
<?php
if ( defined('WP_CLI') && WP_CLI ) {
WP_CLI::add_command('wpdebug delete-drafts', function() {
$drafts = get_posts(['post_status' => 'draft', 'numberposts' => -1]);
foreach ($drafts as $draft) {
wp_delete_post($draft->ID, true);
}
WP_CLI::success('Все черновики удалены.');
});
}
Подключите этот файл через wp-cli.yml или require в wp-config.php, и команда будет доступна:
wp wpdebug delete-draftsТакой подход позволяет создавать инструменты под конкретные задачи вашего сайта.