Посмотрите, как вы можете быстрее выполнять обычные задачи WordPress или даже автоматизировать их, используя мощь bash.
Что такое wp-cli?
wp-cli — это инструмент для управления WordPress через консольное окно.
Когда интерфейс администратора WordPress настолько красив и прост в использовании, возникает естественный вопрос: зачем вам использовать интерфейс командной строки?
Есть две основные причины:
- Клавиатура быстрее, чем мышь. Для опытных пользователей ввод команды может быть на несколько порядков быстрее, чем нажатие кнопки в веб-браузере.
- Сценарии — вы можете поместить несколько команд в текстовый файл и выполнять его автоматически.
В этом уроке я собираюсь дать вам представление о том, для чего хорош wp-cli.
Установка wp-cli
Перед его использованием вам понадобится несколько вещей:
- 
UNIX-подобная оболочка — если вы используете Mac или Linux, вы можете запустить wp-cli на вашем локальном компьютере. Если вы работаете в Windows, вы можете войти на свой сервер Linux через Putty и установить там wp-cli. 
- 
PHP 5.3+ и утилита php-cli. Вы можете проверить наличие этих команд, выполнив следующую команду: 1php -v
- 
Git — это то, что мы будем использовать для установки и обновления wp-cli. 
Проект wp-cli все еще находится в зачаточном состоянии, поэтому лучший способ оставаться в курсе последних версий — это клонировать его из github:
| 1 2 3 | git clone —recurse-submodules git://github.com/andreascreten/wp-cli.git ~/git/wp-cli cd ~/git/wp-cli sudo utils/build-dev | 
 ~/git/wp-cli — это каталог, в который будет установлен wp-cli.  Не стесняйтесь изменить его на то, что вы хотите. 
  Вот и все.  Теперь команда wp должна быть доступна: 
| 1 2 | cd /var/www/public_html/wordpress wp | 

На мультисайте
Если вы хотите использовать wp-cli для многосайтовой установки, вам нужно решить, над каким блогом вы хотите работать:
| 1 | wp —blog=myblog.mynetwork.com | 
  Чтобы не передавать параметр --blog для каждой команды, вы можете сохранить его в файле с особым именем: 
| 1 | echo ‘myblog.mynetwork.com’ > wp-cli-blog | 
  wp-cli прочитает этот файл, если нет параметра --blog . 
Ядро обработки
Для начала посмотрим, с какой версией WordPress мы имеем дело:
| 1 | wp core version —extra | 

Чтобы выполнить обновление, вам просто нужно написать:
| 1 | wp core update | 

Обработка плагинов
Давайте посмотрим, какие плагины мы установили:
| 1 | wp plugin status | 

Похоже, есть обновление для Akismet. Давайте установим это:
| 1 | wp plugin update akismet | 

Теперь давайте установим и активируем плагин с wordpress.org:
| 1 | wp plugin install google-sitemap-generator —activate | 

Также вы можете установить версию плагина для разработки:
| 1 | wp plugin install google-sitemap-generator —activate —dev | 
О, и посмотрите, теперь доступна новая команда:
| 1 | wp google-sitemap | 

Мы можем быстро переключить плагин с активного на неактивный и наоборот:
| 1 | wp plugin toggle google-sitemap-generator | 

Это хороший способ отладки хуков активации .
Точно так же вы можете запустить процедуру удаления плагина, не удаляя файлы плагина:
| 1 | wp plugin uninstall google-sitemap-generator | 
И, конечно же, вы можете удалить плагин:
| 1 | wp plugin delete google-sitemap-generator | 
Работа с темами
У нас есть несколько команд для работы с темами:
| 1 | wp theme status | 

В отличие от плагинов, вы можете одновременно запускать только одну тему, поэтому активация темы автоматически «деактивирует» предыдущую:
| 1 | wp theme activate twentyten | 
И вот небольшая хитрость, чтобы перейти в каталог конкретной темы:
| 1 | cd $(wp theme path twentyeleven) | 
Генерация данных
Если вы пишете тему и хотите стилизовать нумерацию страниц, вам понадобится много постов. Вот самый быстрый способ получить их:
| 1 | wp generate posts —count=1000 | 

Если вы хотите стилизовать список пользователей, вы можете также сгенерировать некоторых из них:
| 1 | wp generate users —role=author | 

Вы также можете создавать отдельных пользователей:
| 1 | wp user create stan stan@company.com | 

Создание файлов экспорта
Вы можете периодически экспортировать ваш контент в файл WXR.
| 1 | wp export —path=./ —user=admin | 

  Вы можете передать дополнительные параметры для ограничения экспортируемого содержимого, такие как --category , --start_date и т. Д. 
Изменение параметров на лету
Существуют простые команды для операций CRUD с опциями:
| 1 2 3 | wp option get permalink_structure wp option add foo bar wp option delete foo | 
Вы не хотите делать это на регулярной основе, так как большинство опций ограничены определенными значениями. Но это может пригодиться в сценариях.
Операции с базами данных
Если вы хотите сделать резервную копию базы данных, просто напишите:
| 1 | wp db dump | 

Или, возможно, вам нужно сделать быстрый запрос, чтобы узнать, когда было опубликовано последнее сообщение:
| 1 | wp db query «SELECT MAX(post_date) from wp_posts WHERE post_type = ‘post’ AND post_status = ‘publish'» | 
Открыть интерактивный сеанс MySQL, чтобы выполнить некоторую диагностику, так же просто:
| 1 | wp db cli | 
Запуск произвольного кода
Иногда единственный способ сообщить wp-cli, что вы хотите, это описать его в коде PHP:
| 1 | wp eval-file do-my-laundry.php | 
С помощью приведенной выше команды wp-cli сначала загрузит WordPress, а затем загрузит и выполнит ваш PHP-файл.
Это полезно в сценариях развертывания или для других сложных действий, которые невозможно выполнить с помощью встроенных команд.
Вы также можете передать встроенный PHP-код:
| 1 | wp eval ‘echo WP_CONTENT_DIR;’ | 
Создание ваших собственных команд
Хотите верьте, хотите нет, но wp-cli написан в основном на PHP. Каждая команда является классом, где каждый метод представляет подкоманду.
Удобно то, что вы можете создать свой собственный класс, поместить его в плагин, и wp-cli автоматически распознает его как собственный. Подробное руководство по созданию команд доступно в вики проекта.
Вывод
Я надеюсь, что убедил вас хотя бы попробовать wp-cli. Если вы обнаружили ошибку или у вас есть запрос на добавление функции, рассмотрите возможность открытия проблемы .
Есть интересный вариант использования для wp-cli? Пожалуйста, поделитесь этим в комментариях ниже.