{"id":325,"date":"2025-01-20T17:22:55","date_gmt":"2025-01-20T20:22:55","guid":{"rendered":"https:\/\/eduardovillao.me\/pt-br\/?p=325"},"modified":"2025-01-20T17:29:29","modified_gmt":"2025-01-20T20:29:29","slug":"como-auto-hospedar-plugins-do-wordpress-no-github-e-entregar-atualizacoes","status":"publish","type":"post","link":"https:\/\/eduardovillao.me\/pt-br\/como-auto-hospedar-plugins-do-wordpress-no-github-e-entregar-atualizacoes\/","title":{"rendered":"Como Auto-Hospedar Plugins do WordPress no GitHub e Entregar Atualiza\u00e7\u00f5es"},"content":{"rendered":"\n
Gerenciar atualiza\u00e7\u00f5es de plugins pode ser um desafio, especialmente se voc\u00ea n\u00e3o est\u00e1 utilizando o reposit\u00f3rio oficial de plugins do WordPress. Mas e se voc\u00ea pudesse auto-hospedar seus plugins no GitHub e entregar atualiza\u00e7\u00f5es de forma transparente, sem a necessidade de bibliotecas complexas ou servi\u00e7os de terceiros?<\/p>\n\n\n\n
Neste guia, apresento uma solu\u00e7\u00e3o simples e poderosa que segue o padr\u00e3o de atualiza\u00e7\u00f5es do WordPress, tornando o processo totalmente transparente para seus usu\u00e1rios. Para isso, desenvolvi uma GitHub Action personalizada e um script PHP que trabalham juntos para gerenciar as atualiza\u00e7\u00f5es de forma f\u00e1cil e eficiente. \u00c9 a mesma solu\u00e7\u00e3o que uso para alguns dos meus pr\u00f3prios plugins, e agora estou compartilhando com a comunidade para que voc\u00ea tamb\u00e9m possa aproveitar.<\/p>\n\n\n\n
Sem depend\u00eancias extras, sem complica\u00e7\u00f5es \u2013 apenas GitHub e um pouco de m\u00e1gica com PHP. Vamos come\u00e7ar! \ud83d\ude80<\/p>\n\n\n\n
Antes de entrarmos nos detalhes, vamos entender: auto-hospedar plugins significa gerenciar o armazenamento e as atualiza\u00e7\u00f5es de seus plugins de forma independente, fora do reposit\u00f3rio WordPress.org. Isso permite que voc\u00ea controle onde seus plugins est\u00e3o armazenados e como as atualiza\u00e7\u00f5es s\u00e3o entregues, sem depender do reposit\u00f3rio oficial do WordPress.<\/p>\n\n\n\n
Em vez de hospedar o plugin no WordPress.org, voc\u00ea utiliza sua pr\u00f3pria infraestrutura \u2013 como o GitHub, um servidor privado ou qualquer outro servi\u00e7o de hospedagem de arquivos \u2013 para gerenciar o ciclo de vida do plugin.<\/p>\n\n\n\n
Basicamente, auto-hospedar permite que os desenvolvedores criem, distribuam e atualizem plugins sob seus pr\u00f3prios termos, enquanto ainda fornecem aos usu\u00e1rios uma experi\u00eancia de atualiza\u00e7\u00e3o familiar e fluida.<\/p>\n\n\n\n
Agora que entendemos o conceito, vamos falar sobre o que \u00e9 necess\u00e1rio e como o processo funciona. Em um n\u00edvel geral, voc\u00ea precisar\u00e1 de:<\/p>\n\n\n\n
Hospedar os detalhes do plugin<\/strong>: O servidor armazena metadados sobre o plugin, como vers\u00e3o mais recente, URL de download e outras informa\u00e7\u00f5es necess\u00e1rias.<\/p>\n\n\n\n Armazenar os arquivos de distribui\u00e7\u00e3o<\/strong>: Inclui o arquivo .zip do plugin, que ser\u00e1 baixado durante o processo de atualiza\u00e7\u00e3o.<\/p>\n\n\n\n Buscar dados do servidor<\/strong>: O script se comunica com o servidor (neste caso, o GitHub) para obter os detalhes mais recentes do plugin.<\/p>\n\n\n\n Comparar vers\u00f5es<\/strong>: Verifica se a vers\u00e3o instalada no site do usu\u00e1rio est\u00e1 desatualizada, comparando-a com a vers\u00e3o mais recente dispon\u00edvel no servidor.<\/p>\n\n\n\n Encaminhar atualiza\u00e7\u00f5es<\/strong>: Se houver uma nova vers\u00e3o dispon\u00edvel, o script integra-se ao sistema de atualiza\u00e7\u00e3o padr\u00e3o do WordPress, tornando o processo transparente para o usu\u00e1rio.<\/p>\n\n\n\n Com esses dois componentes trabalhando juntos, voc\u00ea pode oferecer uma experi\u00eancia de atualiza\u00e7\u00e3o fluida e automatizada para seus plugins, mantendo total controle sobre o processo de distribui\u00e7\u00e3o.<\/p>\n\n\n\n O objetivo aqui n\u00e3o \u00e9 entrar em todos os detalhes t\u00e9cnicos da GitHub Action que desenvolvi, mas entender o fluxo geral do processo e por que ele \u00e9 essencial para a solu\u00e7\u00e3o. Fluxo Simplificado da GitHub Action:<\/p>\n\n\n\n A Action analisa o arquivo readme.txt e outros arquivos relevantes para criar um arquivo JSON contendo informa\u00e7\u00f5es sobre o plugin, como vers\u00e3o, URL de download, descri\u00e7\u00e3o e muito mais. Esse JSON \u00e9 essencial para que o script PHP no lado do plugin possa consultar o servidor e verificar atualiza\u00e7\u00f5es.<\/p>\n\n\n\n A Action compila os arquivos do plugin em um pacote .zip pronto para distribui\u00e7\u00e3o. Durante esse processo, voc\u00ea pode definir regras espec\u00edficas para excluir pastas ou arquivos desnecess\u00e1rios \u2013 como diret\u00f3rios de desenvolvimento, casos de teste ou artefatos de build \u2013 garantindo que o pacote final seja limpo e otimizado.<\/p>\n\n\n\n A Action automatiza a cria\u00e7\u00e3o de um novo release no GitHub. Esse release serve como ponto de hospedagem para o arquivo .zip. Ele \u00e9 marcado com a vers\u00e3o correspondente do plugin, garantindo que o WordPress e o script PHP possam buscar corretamente a vers\u00e3o mais recente.<\/p>\n\n\n\n Do lado do plugin, o script PHP atua como a \u201cponte\u201d entre o plugin instalado no site WordPress e os metadados hospedados no GitHub.<\/p>\n\n\n\n O script de verifica\u00e7\u00e3o de atualiza\u00e7\u00f5es \u00e9 integrado diretamente ao plugin. Ele monitora eventos de atualiza\u00e7\u00e3o do WordPress e utiliza filtros como plugins_api e site_transient_update_plugins para fornecer informa\u00e7\u00f5es de atualiza\u00e7\u00e3o dinamicamente.<\/p>\n\n\n\n O script consulta o arquivo JSON hospedado no GitHub para obter informa\u00e7\u00f5es atualizadas sobre o plugin, como vers\u00e3o, descri\u00e7\u00e3o, URL de download e outros detalhes importantes.<\/p>\n\n\n\n Ap\u00f3s obter os dados do JSON, o script compara a vers\u00e3o instalada do plugin com a vers\u00e3o mais recente dispon\u00edvel nos metadados. Se forem iguais, nenhuma a\u00e7\u00e3o \u00e9 tomada. Se houver uma vers\u00e3o mais recente, o script encaminha as informa\u00e7\u00f5es de atualiza\u00e7\u00e3o ao sistema padr\u00e3o do WordPress.<\/p>\n\n\n\n Se uma nova vers\u00e3o estiver dispon\u00edvel, o WordPress assume o controle utilizando seu mecanismo padr\u00e3o de atualiza\u00e7\u00e3o. Isso garante uma experi\u00eancia fluida e familiar para os usu\u00e1rios.<\/p>\n\n\n\n Se voc\u00ea tiver d\u00favidas, precisar de ajuda na implementa\u00e7\u00e3o ou quiser compartilhar seu feedback, deixe um coment\u00e1rio! Vamos colaborar para melhorar esta solu\u00e7\u00e3o juntos! \ud83d\ude80<\/p>\n\n\n\n \ud83d\udc49 Reposit\u00f3rio GitHub para a GitHub Action: wp-self-host-updater-generator<\/a><\/p>\n\n\n\n \ud83d\udc49 Action no Marketplace do Github: wp-self-host-updater-generator<\/a><\/p>\n\n\n\n2. Um Script de Verifica\u00e7\u00e3o de Atualiza\u00e7\u00f5es no Plugin<\/h3>\n\n\n\n
O Lado do Servidor no GitHub<\/h2>\n\n\n\n
<\/figure>\n\n\n\n
1. Gerar Metadados JSON<\/h3>\n\n\n\n
<\/figure>\n\n\n\n
2. Preparar o Pacote de Distribui\u00e7\u00e3o<\/h3>\n\n\n\n
3. Criar um Release<\/h3>\n\n\n\n
<\/figure>\n\n\n\n
O Lado do Plugin – Script de Verifica\u00e7\u00e3o de Atualiza\u00e7\u00f5es<\/h2>\n\n\n\n
<\/figure>\n\n\n\n
1. Adicionar um Arquivo PHP Simples para Gerenciar Atualiza\u00e7\u00f5es<\/h3>\n\n\n\n
2. Buscar Dados JSON no GitHub<\/h3>\n\n\n\n
3. Comparar a Vers\u00e3o Atual com a Mais Recente<\/h3>\n\n\n\n
4. Seguir o Fluxo de Atualiza\u00e7\u00e3o Padr\u00e3o do WordPress<\/h3>\n\n\n\n
\u00c9 isso! \ud83c\udf89<\/h2>\n\n\n\n