Статьи

Использование wp-cli для Fun и Profit

Посмотрите, как вы можете быстрее выполнять обычные задачи WordPress или даже автоматизировать их, используя мощь bash.


wp-cli — это инструмент для управления WordPress через консольное окно.

Когда интерфейс администратора WordPress настолько красив и прост в использовании, возникает естественный вопрос: зачем вам использовать интерфейс командной строки?

Есть две основные причины:

  • Клавиатура быстрее, чем мышь. Для опытных пользователей ввод команды может быть на несколько порядков быстрее, чем нажатие кнопки в веб-браузере.
  • Сценарии — вы можете поместить несколько команд в текстовый файл и выполнять его автоматически.

В этом уроке я собираюсь дать вам представление о том, для чего хорош wp-cli.


Перед его использованием вам понадобится несколько вещей:

  1. UNIX-подобная оболочка — если вы используете Mac или Linux, вы можете запустить wp-cli на вашем локальном компьютере. Если вы работаете в Windows, вы можете войти на свой сервер Linux через Putty и установить там wp-cli.

  2. PHP 5.3+ и утилита php-cli. Вы можете проверить наличие этих команд, выполнив следующую команду:

    1
    php -v
  3. 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` вывод

Если вы хотите использовать 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
вывод `wp core version`

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

1
wp core update
вывод `wp core update`

Давайте посмотрим, какие плагины мы установили:

1
wp plugin status
вывод `wp plugin status`

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

1
wp plugin update akismet
вывод `wp plugin update`

Теперь давайте установим и активируем плагин с wordpress.org:

1
wp plugin install google-sitemap-generator —activate
вывод `wp plugin install`

Также вы можете установить версию плагина для разработки:

1
wp plugin install google-sitemap-generator —activate —dev

О, и посмотрите, теперь доступна новая команда:

1
wp google-sitemap
`wp sitemap help` вывод

Мы можем быстро переключить плагин с активного на неактивный и наоборот:

1
wp plugin toggle google-sitemap-generator
Вывод `wp plugin toggle`

Это хороший способ отладки хуков активации .

Точно так же вы можете запустить процедуру удаления плагина, не удаляя файлы плагина:

1
wp plugin uninstall google-sitemap-generator

И, конечно же, вы можете удалить плагин:

1
wp plugin delete google-sitemap-generator

У нас есть несколько команд для работы с темами:

1
wp theme status
вывод `wp theme status`

В отличие от плагинов, вы можете одновременно запускать только одну тему, поэтому активация темы автоматически «деактивирует» предыдущую:

1
wp theme activate twentyten

И вот небольшая хитрость, чтобы перейти в каталог конкретной темы:

1
cd $(wp theme path twentyeleven)

Если вы пишете тему и хотите стилизовать нумерацию страниц, вам понадобится много постов. Вот самый быстрый способ получить их:

1
wp generate posts —count=1000
`wp генерирует посты`

Если вы хотите стилизовать список пользователей, вы можете также сгенерировать некоторых из них:

1
wp generate users —role=author
`wp генерирует вывод пользователя '

Вы также можете создавать отдельных пользователей:

1
wp user create stan [email protected]
`wp user create` вывод

Вы можете периодически экспортировать ваш контент в файл WXR.

1
wp export —path=./ —user=admin
вывод `wp export`

Вы можете передать дополнительные параметры для ограничения экспортируемого содержимого, такие как --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
вывод `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? Пожалуйста, поделитесь этим в комментариях ниже.