Автоматическое обновление Wordpress

О Wordpress

Wordpress - самый популярный бесплатный блоговый движок и, соответственно, один из самых часто ломаемых. Для лучшей защиты его необходимо постоянно обновлять, но ещё важнее обновлять плагины, т.к. обычно именно в них находят серьёзные уязвимости.
Если сайт один, то особых сложностей ручное обновление не вызовет, но если сайтов много, то логиниться каждый раз в админку каждого из сайтов и производить монотонные действия - сомнительное удовольствие.

Инструмент wp-cli

wp-cli - инструмент, который позволяет управлять Wordpress из консоли. А именно:

  • Скачивать свежую версию Wordpress
  • Устанавливать плагины/темы
  • Активировать/деактивировать плагины/темы
  • Обновлять ядро Wordpress/плагинов/тем
  • Создавать запросы к БД
  • Производить бекап БД/файлов Wordpress
  • Управлять записями/пользователями
  • …и многое другое (весь список доступных команд по wp help)

Но сегодня поговорим лишь об обновлении CMS и установленных в ней плагинов.

Установка wp-cli

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp

Автоматизация обновления Wordpress и плагинов

Переходим в каталог с установленным Wordpress:

$ cd /home/site1/wordpress/

Обновляем ядро WP:

$ wp core update

Обновляем БД, если требуется:

$ wp core update-db

Обновляем все установленные плагины:

$ wp plugin update --all

Если всё выполнилось без ошибок, то формируем скрипт /root/wordpress_update.sh:

#!/bin/sh

SITES="/home/site1/wordpress /home/site2/wordpress /home/site3/wordpress"

for site in $SITES; do
  cd $site
  wp core update
  wp core update-db
  wp plugin update --all
done

Запускаем и если ошибок не возникло - формируем crontab-правило следующего содержания:

$ crontab -l
@daily /root/wordpress_update.sh

Теперь все установленные вордпрессы и плагины будут обновляться ежедневно.