Давно искал эффективное решение для обновления плагинов и тем с GitHub. Эксперементировал со специальным классом.
Но решение было крайне замороченным и ляповатым.
Тут снова возникла потребность, погуглил и нашел новое решение GitHub Updater.
Попробовал и очень понравилось!
По сути настройка сводится к двум шагам:
1. Поставить плагин GitHub Updater
2. Добавить в свою тему или плагин одну или две строчки
Давайте рассмотрим их подробнее.
Ставим плагин
- Идем на страницу плагина и скачиваем последнюю версию https://github.com/afragen/github-updater
- Ставим к себе на сайт из архива. Как обычно.
- Активируем
Тут все 🙂
Добавляем строчку в свой компонент
Нужно добавить строчку типа 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. И очень важно – нужно чтобы имя репозитория и имя папки плагина совпадали точно. Иначе при обновлении будет – барабум! Он будет записываться в левую папку.
Привет! Сделал по твоей инструкции. Пока не плагин не видит своих обновлений на github. Можешь подсказать что делаю не так?