Давно искал эффективное решение для обновления плагинов и тем с GitHub. Эксперементировал со специальным классом.

Но решение было крайне замороченным и ляповатым.

Тут снова возникла потребность, погуглил и нашел новое решение GitHub Updater.

Попробовал и очень понравилось!

По сути настройка сводится к двум шагам:

1. Поставить плагин GitHub Updater

2. Добавить в свою тему или плагин одну или две строчки

Давайте рассмотрим их подробнее.

Ставим плагин

  1. Идем на страницу плагина и скачиваем последнюю версию https://github.com/afragen/github-updater
  2. Ставим к себе на сайт из архива. Как обычно.
  3. Активируем

Тут все 🙂

Добавляем строчку в свой компонент

Нужно добавить строчку типа https://github.com/<owner>/<repo> или коротко <owner>/<repo> в основной файл плагина или темы.

Перед строчкой добавить ключ: GitHub Theme URI для темы или GitHub Plugin URI для плагина.

Пример для темы:

/*
Theme Name:       Test Theme
Theme URI:        http://drfragen.info/
Version:          0.1.0
Description:      Child theme of TwentyTwelve.
Author:           Andy Fragen
Template:         twentytwelve
Template Version: 1.0.0
GitHub Theme URI: https://github.com/afragen/test-child
*/

Пример для плагина

/*
Plugin Name:       Test Plugin
Plugin URI:        https://github.com/afragen/github-updater
Description:       A plugin to automatically update GitHub hosted plugins and themes into WordPress. Plugin class based upon <a href="https://github.com/codepress/github-plugin-updater">codepress/github-plugin-updater</a>. Theme class based upon <a href="https://github.com/WordPress-Phoenix/whitelabel-framework">Whitelabel Framework</a> modifications.
Version:           1.0.0
Author:            Andy Fragen
License:           GNU General Public License v2
License URI:       http://www.gnu.org/licenses/gpl-2.0.html
Domain Path:       /languages
Text Domain:       github-updater
GitHub Plugin URI: https://github.com/afragen/test-plugin
*/

Все!

Далее либо ждем когда движок сам проверит обновления, или идем и помогаем ему:

Далее все как обычно. За исключением того, что файлы будут взяты с GitHub.

Особенности

Далее есть ряд особенностей.

1. Можно указать ветку, из которой брать обновления, для этого нужно указать ключ типа

GitHub Branch:     master

В том же блоке, где мы указали адрес до репозитория.

Скажу честно, эту возможность не проверял.

2. Чтобы плагин обнаружил новую версию, достаточно поменять версию в основном файле компонента. Как мы это делаем обычно:

Version:           1.0.0

3. Еще странная особенность в том, что не указав ветку, обновление будет браться из последней метки.

И здесь нас подстерегает еще одна засада. Если вы только что сделали коммит и поставили ему новую метку, то видимо есть некая задержка кеша и попытка обновления будет срабатывать на предыдущую метку. Нужно чуть чуть подождать и тогда обновление пройдет нормально. Я так пол часа бился, меняя метки и не понимая, почему загружается старая версия плагина 🙂

4. И очень важно — нужно чтобы имя репозитория и имя папки плагина совпадали точно. Иначе при обновлении будет — барабум! Он будет записываться в левую папку.