Поразительно, сколько разного кода WordPress доступно на GitHub. Многие разработчики не хотят хранить свои плагины на WordPress.org, руководствуясь теми или иными причинами, что в итоге ведет к тому, что их код очень трудно обнаружить. Использование github-плагинов традиционно требует от пользователей совершения следующих действий: нужно посетить сайт, найти плагин, скачать zip-файл, после чего загрузить его на сайт для установки.
Простой способ поиска и установки плагинов WordPress, размещенных на сайте GitHub
Пол Кларк создал плагин Github Plugin Search, который позволяет получать доступ к плагинам и устанавливать их напрямую из консоли. Он отыскал способ связи API кода поиска для GitHub с API инсталлятора плагинов. Вот небольшое демо, демонстрирующее работу плагина:
Как происходит обнаружение плагинов, расположенных на GitHub
Заинтригованный идеей, я решил протестировать плагин и обратился к Полу, чтобы понять, как Github Plugin Search может находить WordPress-плагины, расположенные на GitHub. Он ответил мне:
«API поиска кода на GitHub достаточно новый (плагин до сих пор находится в разработке; вам нужно передать специальный заголовок, чтобы получить доступ к нему). На сайте GitHub поиск недостаточно мощный, он не позволяет разыскивать WordPress-плагины или искать контент каждого отдельного плагина.
Чтобы обойти данные ограничения (лимитированное число запросов, отсутствие возможности задания точного соответствия текста, как, к примеру, «Plugin Name»), я использовал комбинацию двух поисковых функций, сравнивая их результаты, и затем переходя к репозиториям, в которых содержатся устанавливаемые WordPress-плагины».
Пол обрисовал в общих чертах три требования, которым должен отвечать плагин, чтобы его можно было найти с помощью Github Plugin Search:
- Быть PHP-файлом
- Находиться в репозитории верхнего уровня
- Иметь соответствующий комментарий в самом начале файла, который соответствует заголовку плагинов WordPress, с полями “Plugin Name:” и “Plugin URI:”. (Такой формат заголовков плагинов является уникальным – никакие другие PHP-системы, известные мне, не используют аналогичный формат).
Чуть ниже приведен пример того, как плагин полностью забивает поиск результатами, полученными из GitHub. Это не самая грандиозная затея, поскольку GitHub имеет зеркало WordPress-плагинов, однако Пол впоследствии хочет добавить опцию переключения между результатами wordpress.org и github.
На данный момент результаты, которые возвращает плагин, являются самыми базовыми, однако Пол уверяет, что это связано с работой API в режиме тестирования:
«Когда Github API будет полностью протестирован, я сделаю выдачу результатов более точной. На данный момент зарегистрированные пользователи могут совершать только 20 запросов каждые несколько минут. Другие API позволяют делать 5000 запросов. Я жду, что разработчики изменят это при выпуске финальной версии API. Когда они сделают это, плагин сможет получать точную информацию о файлах плагина, выполнять проверку, передавать богатые данные, состоящие из readme и скриншотов».
Как пользователям получать уведомления о новых стабильных версиях плагинов, хранящихся на Github?
Я задал Полу вопрос, смогут ли пользователи впоследствии получать обновления для плагинов, взятых с Github. Это обязательное условие, поскольку пользователи не желают отстранять себя от последующих обновлений. «API обновлений WordPress использует название плагина, а не его источник», объясняет Пол. «Таким образом, если пользователь хочет установить wp-seo с сайта Github прямо сейчас, то обновления с wordpress.org будут работать».
Пол примерно год назад написал плагин, который обновляет плагины, полученные из репозиториев Github, Bitbucket или любых Git (публичных или приватных), используя URL из заголовка плагина. Этот плагин прекрасно работает на сайтах его клиентов, однако в текущей версии Github Plugin Search он отключил данную возможность. Пол объяснил, почему он решил так поступить:
- В текущем плагине обновлений Git URL установлен в заголовке. Если все плагины нужно будет обновить, мне понадобится сгенерировать и сохранить информацию для каждого установленного плагина.
- Текущий апдейтер совершает обновления, как только появляется пометка о новой версии на GitHub. Многие веб-разработчики не заботятся об этом (в Git способ уведомления о выходе новых версий несколько отличается от того способа, который используется в WordPress), потому, чтобы работать со всеми плагинами, мне нужно получить номер версии из удаленного файла readme. Сделать это можно, но это занимает некоторое время.
- Если система обновлений будет изменена, пользователям придется понять, какие плагины привели к такому повороту событий, после чего отключить или подключить их. С течением времени эти сложности будут решены.
Будущее плагина Github Plugin Search
Как вы можете видеть, плагин пока еще находится в стадии разработки, но основная его концепция уже прощупывается. Пол планирует продолжить усовершенствование своего плагина. В будущем он может добавить счетчик звезд и форков для github репозиториев, чтобы обеспечить больше данных для пользователей, выбирающих плагины. Он создал список улучшений, которые могут выйти в будущем.
Если вы хотите провести форк Github Search Plugin или предложить изменения, перейдите к github или войдите в контакт с Полем через Twitter.
Источник: wptavern.com
Это как раз то что я всегда мечтал сделать но так и не смог разобраться
Отличный мануал! Спасибо!