web-development-kb-pt.site

Atualizações para um plugin privado?

Se eu escrever um plugin privado, existe alguma maneira de usar o mecanismo de atualização automática do WordPress para atualizá-lo?

Eu quero encapsular a funcionalidade, mas é específico para os meus 5 ou mais blogs, então não é um bom candidato para o recurso de plugins públicos. Mas eu amo o mecanismo de atualização fácil.

Existe uma maneira de fazer isso?

112
artlung

Parece que o código aplicável está em 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);

Ele verifica especificamente api.wordpress.org. Tecnicamente falando, seria possível passar uma chave dentro de $to_send para delegar o cheque, mas que eu saiba que não é um recurso suportado.

Se você conectar a set_site_transient_update_plugins, você pode adicionar seus próprios detalhes de pacote a essa variável. Parece que esses valores serão confiáveis ​​quando você executar o atualizador de plug-ins. Veja wp-admin/update.php e wp-admin/includes/class-wp-upgrader.php. Dado o código nessas duas funções, eu acho que seria possível injetar seu próprio servidor de atualização, você só precisa olhar como os detalhes do pacote são formatados e combinar isso.

45
Annika Backstrom

Este plugin faz isso por você:

Atualizações automáticas para plug-ins privados e comerciais

Desde tempos imemoriais, apenas plugins hospedados no diretório de plugins oficiais do WordPress.org suportam atualizações automáticas. Agora, escrevi uma biblioteca PHP que você pode usar para adicionar recursos de atualização automática a qualquer plug-in. Plugins públicos, privados e comerciais - todos agora podem aproveitar os benefícios das notificações automáticas de atualização e upgrades de um clique.

repositório GitHub

40
agileapricot

Se você gosta de free ... e quer usar algo como o GitHub, GitLab ou BitBucket, este é um plugin de boa qualidade e suportado para manipulá-lo (suporta private e enterprise):

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

9
sMyles

Eu estou olhando para a mesma coisa. Alguns links que descobri podem ser úteis:

A primeira é alguma informação e ponteiros para a API de atualizações. O segundo é um snippet de código que mostra como solicitar informações da API.

8
Dougal Campbell

Você pode querer verificar o WordPress Development Kit plugin . Recentemente migrei meu sistema de atualização proprietário para este plug-in. O plugin agora serve como o processador de back-end para minhas atualizações de plugins premium.

Isso é semelhante na configuração da solução fornecida pelo agileapricot acima. Ele será instalado como um plugin padrão em um site WordPress. Você hospeda seus arquivos premium .Zip e o plugins.json em diretórios de produção ou de pré-lançamento em seu servidor (especificados nas configurações do plug-in).

O plug-in também permite listar versões de plug-ins e pode até fornecer um download para os arquivos em páginas públicas, protegidas por senha ou protegidas por assinatura. Você pode ver um exemplo da lista de versões na página aqui .

Eu tenho usado o plug-in por meses para publicar o log de alterações para meus complementos premium, a lista de versões atuais e as listas de download dos meus titulares de Assinatura Premier. Agora, com a versão 0.7.01, ele está funcionando como o destino da consulta para atualizações in-line do WordPress.

Espero que alguns de vocês achem útil.

1
Lance Cleveland

Se você deseja uma solução hospedada que não precisa gerenciar, confira o Kernl ( https://kernl.us ). É um serviço que fornece a infra-estrutura para atualização de plugins e facilita a integração em seus próprios plugins.

1
Jack Slingerland