Если you’ ве работал с WordPress на некоторое время, вы, возможно, пытались свои силы в написании плагина.
Многие разработчики начнут создавать плагины для повышения собственную тему или в модули их code.В конце концов, однако, вы можете распространять плагин для более широкой аудитории .
В то время как у вас всегда есть возможность использовать репозиторий Subversion WordPress, могут быть случаи, когда вы предпочитаете провести плагин самостоятельно.Возможно, вы предлагаете вашим пользователям плагин премиум.Может быть, вам нужен способ, чтобы держать свой client’ ы код синхронизации на нескольких сайтах.Это может быть просто, что вы хотите использовать Git рабочий вместо Subversion.Независимо от причины, этот учебник покажет вам, как настроить хранилище GitHub, чтобы подтолкнуть обновления вашего plugin, где она находится .
Plan
Прежде, чем мы слишком далеко в код, мы должны начать с контуром, что мы будет делать:
- Во-первых, мы узнаем немного о transients и как они работают в WordPress .
- Тогда, мы будем строить класс PHP для размещения весь наш код .
- Далее мы собираемся подключить наш плагин для GitHub .
- Наконец, мы создадим элементы интерфейса, которые позволяют пользователям взаимодействовать с нашего плагина .
Когда вы закончите эту статью, вы должны иметь полностью функционирующий плагин, который будет обновлять напрямую GitHub релизы.Готовы начать
WordPress Transients
Прежде всего, каковы WordPress transients 1 ?WordPress переходные процессы являются недолго ввод данных, которые хранятся в течение определенного срока и автоматически удаляются, когда он истек — думать о них, как на стороне сервера печенья. WordPress использует переходные для хранения информации обо всех plugins, которые были установлены, в том числе их номер версии.Каждый раз в то время WordPress будет обновить данные, хранящиеся в переходном.Именно это событие, WordPress использует проверять хранилище Subversion для обновленных плагинов.Это также это событие мы будем использовать для проверки наличия обновлений на нашем собственном плагина на GitHub .
Получение Started
Let’ начнем с создания нашего класса получения обновлений:
class Smashing_Updater {
protected $file;
public function __construct( $file ) {
$this->file = $file;
return $this;
}
}
Первое, что мы должны сделать, это создать имя класса и конструктор (Имя класса может быть все, что угодно).Мы собираемся необходимо выяснить основную информацию о плагине WordPress Мы обновляем, включая номер версии.We’ сделаю это путем передачи основной плагин file’ сек путь в нашей системе обновлений, а затем we’ будете назначить это значение свойства .
Вы могли бы быть интересно, почему мы должны передать plugin’ ы путь в нашем классе.Вы видите, способ WordPress плагин магазины информация является с помощью основной плагин file’ сек путь,Уникальный identifier (т.е. базовое).Let’ ы сказать, что наша плагин в каталоге /wp-content/plugins/smashing-plugin/smashing-plugin.php, базовое для нашего плагина будет разбив-плагин / разбив-plugin.php.Мы будем использовать этот базовое имя, чтобы проверить, если плагин мы обновляем активируется, среди прочего .
Далее нам нужно получить данные плагина и установить его на недвижимость в нашем классе:
class Smashing_Updater {
protected $file;
protected $plugin;
protected $basename;
protected $active;
public function __construct( $file ) {
$this->file = $file;
add_action( 'admin_init', array( $this, 'set_plugin_properties' ) );
return $this;
}
public function set_plugin_properties() {
$this->plugin = get_plugin_data( $this->file );
$this->basename = plugin_basename( $this->file );
$this->active = is_plugin_active( $this->basename );
}
}
Вы, возможно, заметили, что я использую действия admin_init
2 установить свойства плагина.Это потому, что функция get_plugin_data()
, возможно, не было определено в точке, в которой этот код был вызван.Перехватив его admin_init
мы гарантируем, что у нас есть, что функции, доступной, чтобы получить наши данные плагина.Мы также проверки, если плагин активирован, и присвоения, что и объект плагина к свойствам в нашем классе.
Чтобы узнать больше о WordPress действий и фильтров, вы должны взглянуть на плагин API 3 .
Теперь, когда у нас есть класс создан и схватил некоторые из основных we__58 данные плагин | LL необходимости, it’ с Время мы начинаем говорить о GitHub .
Настройка GitHub
Мы можем начать с создание репозитория для нашего plugin.Важно помнить, что мы будет тянуть файлы отсюда вниз, так что структура каталогов имеет важное значение.You’ должны будете корень репозитория будет содержимое папки плагинов, а не саму папку плагина.Вот пример того, что вы должны увидеть:
В моем хранилище меня есть два файла.Основной файл плагина разбив-plugin.php и сценарий обновления updater.php.Ваше репо может выглядеть немного отличается в зависимости от вашего плагина файлов .
Теперь у нас есть хранилище создана, let’ поговорим о том, как мы собираемся, чтобы проверить номер версии на GitHub.У нас есть несколько вариантов здесь.Мы могли бы снести основной файл и разобрать содержимое, чтобы попытаться найти номер версии.Тем не менее, я предпочитаю использовать встроенные функции высвобождения GitHub.Let’ добавим новый релиз .
Начнитесобирается на “ | releases__55 вкладке и нажать “ Создать новую release”:
Здесь вы найдете несколько полей нам нужно заполнить.Наиболее важным из них является “ Скачать | version__55 области.Это где мы поставим текущую версию выпуска нашего плагина.В настоящее время, вы, вероятно, знакомы с семантическое версий format 6 .Это формат, мы будем использовать для нашей области.Мы также должны использовать этот формат для нашего основного файла плагина, в комментариях PHP.Продолжить заполнение заголовка и описания полей в релизе, пока ваш релиз не выглядит как что-то вроде этого:
Хит “ Опубликовать release” кнопку, чтобы создать релиз.Это создаст файл ZIP в нашем репо, что мы можем использовать в нашей сценарий обновления.Затем, вы просто повторите этот процесс всякий раз, когда вы хотите, чтобы развернуть новую версию плагина.Теперь мы можем использовать API GitHub, чтобы проверить номер версии и у нас есть ZIP файл готов к работе .
Но у меня есть личное Plugin
Don’ волнуйтесь, просто несколько дополнительных шагов.Частные плагины требуют, чтобы передать токен авторизации, когда вы делаете запросы к API.Во-первых перейдите в настройки аккаунта:
Затем перейдите к “ Applications” в левом меню и выберите “ Создать новую token” под “ Личная tokens” мета ящик.Вы будете привлечены к этой странице:
Вы можете передать маркер любое описание вы любите, тогда выберите область репо и ударил “ Создать token”.После you’ ве сгенерированный маркер, скопируйте его куда-то вниз — мы будем использовать его позже .
Подключение к GitHub
Теперь мы можем начать добавлять код для подключения к нашей Updater GitHub.Во-первых we’ добавить будете несколько свойств, чтобы держать нашу информацию репо, и один, чтобы держать наш ответ от GitHub:
private $username;
private $repository;
private $authorize_token;
private $github_response;
Тогда we’ будете добавить некоторые сеттеров для наших новых свойств:
public function set_username( $username ) {
$this->username = $username;
}
public function set_repository( $repository ) {
$this->repository = $repository;
}
public function authorize( $token ) {
$this->authorize_token = $token;
}
Эти сеттеры позволяют изменять имена и хранилищ без reinstantiating наш класс Updater.Скажем, вы хотели бы иметь открываемые функцию или требуют регистрации пользователей, вы можете изменить репо в про версии вашего плагина, просто добавив условный оператор.Let’ взглянем на то, как мы должны включить этот код в нашем главном файле плагина:
// Include our updater file
include_once( plugin_dir_path( __FILE__ ) . 'update.php');
$updater = new Smashing_Updater( __FILE__ ); // instantiate our class
$updater->set_username( 'rayman813' ); // set username
$updater->set_repository( 'smashing-plugin' ); // set repo
Сейчас let’ напишем код, который мы должны получить версию тег из GitHub .
private function get_repository_info() {
if ( is_null( $this->github_response ) ) { // Do we have a response?
$request_uri = sprintf( 'https://api.github.com/repos/%s/%s/releases', $this->username, $this->repository ); // Build URI
if( $this->authorize_token ) { // Is there an access token?
$request_uri = add_query_arg( 'access_token', $this->authorize_token, $request_uri ); // Append it
}
$response = json_decode( wp_remote_retrieve_body( wp_remote_get( $request_uri ) ), true ); // Get JSON and parse it
if( is_array( $response ) ) { // If it is an array
$response = current( $response ); // Get the first item
}
if( $this->authorize_token ) { // Is there an access token?
$response['zipball_url'] = add_query_arg( 'access_token', $this->authorize_token, $response['zipball_url'] ); // Updat ...
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров