Обновления для частного плагина?

117

Если я напишу приватный плагин, есть ли способ использовать механизм автообновления WordPress для его обновления?

Я хочу инкапсулировать функциональность, но она специфична для моих 5 или около того блогов, так что это не очень хороший кандидат на общедоступный ресурс плагинов. Но я люблю легко обновляемый механизм.

Есть ли способ сделать это?

artlung
источник
Я считаю, что это обсуждалось как фильтруемый вариант в списке рассылки wp-hackers еще в тот день. Это никогда не было решено, IIRC. Я думаю, что соответствующее обсуждение было в этой теме: lists.automattic.com/pipermail/wp-hackers/2009- Февраль/ … ... но я могу ошибаться.
ZaMoose
Если вы не хотите использовать свое собственное решение, вы можете использовать kernl.us для обновления размещаемых плагинов.
Джек Слингерленд,

Ответы:

48

Похоже , применимый код в 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. Учитывая код в этих двух функциях, я думаю, что было бы возможно внедрить ваш собственный сервер обновлений, вам просто нужно посмотреть, как отформатированы детали пакета и соответствовать этому.

Анника Бэкстрем
источник
42

Этот плагин делает это для вас:

Автоматические обновления для частных и коммерческих плагинов

С незапамятных времен только плагины, размещенные в официальном каталоге плагинов WordPress.org, поддерживали автоматические обновления. Теперь я написал библиотеку PHP, которую вы можете использовать для добавления возможностей автоматического обновления в любой плагин. Публичные, частные и коммерческие плагины - все теперь могут пользоваться преимуществами автоматических уведомлений об обновлениях и обновлений в один клик.

GitHub репозиторий

agileapricot
источник
2
Вам также может быть интересно управлять плагинами на вашей стороне ... возможно, с пакетом wp-update-server, написанным тем же автором;) github.com/YahnisElsts/wp-update-server Используя этот сервер, вы можете защитить свои плагины, как описано здесь: w-shadow.com/blog/2013/03/19/…
SimonSimCity
Как отключить проверку обновлений WordPress по умолчанию на бесплатные плагины?
csandreas1
Несмотря на то, что этот сайт выглядит устаревшим, проект очень активно поддерживается, и он также работает с частными репозиториями Bitbucket / Github! См. Их репозиторий Github для получения дополнительной информации о различных доступных интеграциях github.com/YahnisElsts/plugin-update-checker
Mr. Me
10

Если вам нравится бесплатный ... и вы хотите использовать что-то вроде GitHub, GitLab или BitBucket, это хороший и поддерживаемый плагин для его обработки (поддерживает частные и корпоративные приложения):

https://github.com/afragen/github-updater

sMyles
источник
1
Вау! Похоже, хорошо поддержанный и зрелый проект!
Армстронг
1
Полагаться на другой плагин не кажется очень чистым решением.
Контур
2
@kontur очень верно, но, как будто это открытый исходный код и постоянно обновляется, его можно использовать в качестве фреймворка или просто в качестве примера кода для создания своего собственного.
sMyles
8

Я смотрю на то же самое. Я нашел пару ссылок, которые могут оказаться полезными:

Во-первых, некоторая информация и указатели на API обновлений. Второй фрагмент кода, показывающий, как на самом деле запрашивать информацию из API.

Дугал Кэмпбелл
источник
1
@Dougal - Хорошие ссылки!
MikeSchinkel
1

Вы можете попробовать плагин WordPress Development Kit . Я недавно перенес свою собственную систему обновлений на этот плагин. Плагин теперь служит внутренним процессором для моих премиальных обновлений плагинов.

По настройке это похоже на решение, предоставленное agileapricot выше. Он будет установлен как стандартный плагин на сайте WordPress. Вы размещаете свои премиум-файлы .zip и plugins.json в производственных или пререлизных каталогах на своем сервере (указанном в настройках плагина).

Плагин также позволяет вам перечислять версии плагинов и может даже обеспечить загрузку файлов на общедоступных, защищенных паролем или защищенных подпиской страницах. Вы можете увидеть пример списка версий на странице здесь .

Я использовал плагин в течение нескольких месяцев, чтобы публиковать журнал изменений для своих премиум-надстроек, список текущих версий и списки загрузок для моих владельцев Premier Subscription. Теперь, с версией 0.7.01, он работает как назначение запросов для встроенных обновлений WordPress.

Надеюсь, некоторые из вас найдут это полезным.

Ланс Кливленд
источник
1

Если вы хотите разместить решение, которым не нужно управлять, обратитесь к Kernl ( https://kernl.us ). Это сервис, который предоставляет инфраструктуру для обновления плагинов и позволяет легко интегрироваться в ваши собственные плагины.

Джек Слингерленд
источник
Это кажется жизнеспособным.
Контур
-1

Вы можете использовать этот коммерческий плагин: http://autohosted.com/ без ограничений и иметь несколько других функций, которые могут вам понадобиться:

  • Нет ежемесячной платы
  • Неограниченное использование
  • Простая интеграция с темами и плагинами
  • Аутентификация по доменам, ключам и ролям
Дэвид
источник
1
Это закрыто для новых регистраций ...
Клифф P