it-swarm.xyz

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

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

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

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

112
artlung

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

45
Annika Backstrom

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

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

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

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

40
agileapricot

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

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

9
sMyles

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

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

8
Dougal Campbell

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

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

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

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

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

1
Lance Cleveland

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

1
Jack Slingerland