Обновления для частного плагина?
Если я напишу частный плагин, есть ли способ использовать механизм автоматического обновления WordPress для его обновления?
Я хочу инкапсулировать функциональность, но она специфична для моих собственных 5 или около того блогов, поэтому она не является хорошим кандидатом для общедоступного ресурса плагинов. Но мне нравится механизм простого обновления.
Есть ли способ сделать это?
7 answers
Похоже, что применимый код находится в wp-includes/update.php
, wp_update_plugins()
:
$to_send = (object) compact('plugins', 'active');
$options = array(
'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3),
'body' => array( 'plugins' => serialize( $to_send ) ),
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
);
$raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);
Он специально проверяет api.wordpress.org . Технически говоря, можно было бы передать ключ внутри $to_send
, чтобы делегировать проверку, но, насколько мне известно, это не поддерживаемая функция.
Если вы подключитесь к set_site_transient_update_plugins
, вы можете добавить свои собственные сведения о пакете в эту переменную. Похоже, что этим значениям будут доверять при запуске средства обновления плагинов. См. wp-admin/update.php
и wp-admin/includes/class-wp-upgrader.php
. Учитывая код в этих двух функциях, я думаю, можно было бы внедрить свой собственный сервер обновлений, вам просто нужно посмотреть, как отформатированы данные пакета, и сопоставить их.
Этот плагин делает это за вас:
Автоматическое Обновление Для Частных И Коммерческих Плагинов
С незапамятных времен только плагины, размещенные в официальном WordPress.org каталог плагинов поддерживает автоматическое обновление. Теперь я написал библиотеку PHP, которую вы можете использовать для добавления возможностей автоматического обновления в любой плагин. Общедоступные, частные и коммерческие плагины – все теперь могут пользоваться преимуществами автоматических уведомлений об обновлениях и одним щелчком мыши обновления.
Если вам нравится бесплатно... и хотите использовать что-то вроде GitHub, GitLab или BitBucket, это качественный и поддерживаемый плагин для его обработки (поддерживает частные и корпоративные приложения):
Я занимаюсь тем же самым. Пара ссылок, которые я нашел, которые могут быть полезны:
Во-первых, это некоторая информация и указания на API обновлений. Второй - фрагмент кода, показывающий, как на самом деле запрашивать информацию из API.
Возможно, вы захотите ознакомиться с плагином WordPress Development Kit. Недавно я перенес свою собственную систему обновлений на этот плагин. Плагин теперь служит внутренним процессором для моих обновлений плагинов премиум-класса.
Это похоже по настройке на решение, предоставленное agileapricot выше. Он будет установлен как стандартный плагин на сайте WordPress. Вы размещаете свои zip-файлы премиум-класса и плагины.json в рабочих или предварительных каталогах на вашем сервере (указывается в настройках плагина).
Плагин также позволяет вам перечислять версии плагинов и даже может предоставлять загрузку файлов на общедоступных, защищенных паролем или защищенных подпиской страницах. Вы можете увидеть пример списка версий на странице здесь.
Я использую плагин в течение нескольких месяцев, чтобы публиковать журнал изменений для моих надстроек премиум-класса, список текущих версий и списки загрузок для владельцев подписки Premier. Теперь, с версией 0.7.01, он работает в качестве места назначения запросов для встроенных обновлений WordPress.
Надеюсь, некоторые из вас найдут это полезным.
Если вам нужно размещенное решение, которым вам не нужно управлять, проверьте Kernl (https://kernl.us ). Это сервис, который предоставляет инфраструктуру для обновления плагинов и упрощает интеграцию в ваши собственные плагины.
Вы можете использовать этот коммерческий плагин: http://autohosted.com / никаких ограничений и есть несколько других функций, которые вам могут понадобиться:
- Без ежемесячной платы
- Неограниченное использование
- Простая интеграция с темами и плагинами
- Аутентификация по доменам, ключам и ролям