- Como Criar um Plugin WordPress com Composer e PSR-4 – WordPress Extremo Dia 1
- Como Usar Serviços em Plugins para Código Limpo e Desacoplado – WordPress Extremo Dia 2
- Como Usar Repositórios em Plugins para Separar Lógica de Dados – WordPress Extremo Dia 3
- Injeção de Dependência Manual em Plugins WordPress – WordPress Extremo Dia 4
- Hooks Avançados no WordPress: apply_filters, do_action e boas práticas
- Criando Comandos WP-CLI Personalizados para Plugins WordPress
- Como Gerenciar Logs e Erros Internos em Plugins WordPress (Do Jeito Certo)
- Tratamento de Erros e Uso Inteligente de Exceptions em Plugins WordPress
- Segurança Profunda em Plugins WordPress
- Internacionalização e Localização (i18n e l10n)
- Criando Settings Pages Profissionais no WordPress
- Permissões Customizadas e Controle de Acesso em Plugins WordPress
- Separação Clara de Camadas: Core, Domain e Infra
- Atualizações Automáticas via GitHub.
- Checklist Final de Publicação: WordPress.org e Produção
Fala, pessoal! 👋
Aqui é o Asllan Maciel novamente – e hoje o papo é sobre algo que pouca gente implementa direito: um sistema profissional de atualizações automáticas de plugins direto do GitHub.
Se você está criando um plugin sério – seja pra vender, distribuir gratuitamente ou apenas manter no seu próprio ecossistema – permitir que o usuário atualize facilmente com um clique é essencial.
Hoje vamos implementar isso do jeito certo, sem gambiarra.
Bora evoluir? 😎
🧠 Por que um sistema de atualização automática?
Atualizar seu plugin via GitHub traz vantagens como:
✅ Usuário recebe melhorias e correções rapidamente
✅ Você evita lidar com zip manual e FTP
✅ Ajuda no controle de versões e distribuições privadas
✅ Dá um toque de profissionalismo REAL ao seu projeto
📦 Estrutura que já temos
Nos últimos posts, estruturamos bem o plugin:
src/
├── Admin/
│ └── SettingsPage.php
├── Services/
│ ├── HelloService.php
│ ├── LogService.php
├── Helpers/
│ └── PermissionHelper.php
├── Repositories/
├── Commands/
├── Hooks/
│ └── Init.php
Agora, vamos adicionar o sistema de atualização automática no plugin.
🔄 Como funciona a mágica? GitHub Updater via API
O WordPress, por padrão, só busca atualizações no repositório oficial, então precisamos enganá-lo de maneira controlada, criando um hook que:
- Informa ao WordPress que existe uma nova versão
- Aponta para o
.zip
da nova versão do plugin no GitHub - Faz o processo automático quando o usuário clicar em “Atualizar”
🛠️ Passo a passo para ativar atualizações via GitHub
1. 📁 Crie o arquivo GitHubUpdater.php
em src/Services/
namespace WpArquiteturaExtrema\Services;
class GitHubUpdater
{
private $plugin_file;
private $repo_api_url;
private $zip_url;
private $version;
public function __construct()
{
$this->plugin_file = plugin_basename(WP24H_PLUGIN_FILE);
$this->repo_api_url = 'https://api.github.com/repos/SEU_USUARIO/SEU_REPOSITORIO/releases/latest';
$this->zip_url = 'https://github.com/SEU_USUARIO/SEU_REPOSITORIO/archive/refs/tags/v1.0.0.zip'; // atualize conforme versão
$this->version = '1.0.0'; // mesma versão do seu plugin
}
public function register()
{
add_filter('pre_set_site_transient_update_plugins', [$this, 'check_update']);
add_filter('plugins_api', [$this, 'plugin_info'], 10, 3);
}
public function check_update($transient)
{
if (empty($transient->checked)) return $transient;
$response = [
'slug' => dirname($this->plugin_file),
'new_version' => $this->version,
'url' => '',
'package' => $this->zip_url,
];
$transient->response[$this->plugin_file] = (object) $response;
return $transient;
}
public function plugin_info($result, $action, $args)
{
if ($action !== 'plugin_information') return $result;
if ($args->slug !== dirname($this->plugin_file)) return $result;
return (object) [
'name' => 'WP Arquitetura Extrema',
'version' => $this->version,
'download_link' => $this->zip_url,
'sections' => [
'description' => 'Atualizações automáticas via GitHub.',
'changelog' => 'Versão 1.0.0: Estrutura inicial com atualização.',
],
];
}
}
2. 🧩 Instancie o GitHubUpdater no Init.php
use WpArquiteturaExtrema\Services\GitHubUpdater;
public function init_plugin()
{
(new GitHubUpdater())->register();
// outros services...
}
📝 Dicas de versão e empacotamento
- Sempre use tags sem o prefixo “v” se não configurar no código
- Seu plugin deve estar no formato .zip no GitHub Releases
- Mantenha o readme.txt atualizado para referência
✅ Resultado Final
Quando o WordPress verificar por atualizações, ele verá a nova versão disponível no GitHub e oferecerá o botão de “Atualizar agora” direto no painel.
Simples, profissional e eficaz. 🧠
🔁 Reaproveitamento na nossa arquitetura
Este GitHubUpdater
foi criado como um Service desacoplado. Isso significa que você pode:
- Usá-lo em outros plugins só mudando a URL e versão
- Testar de forma isolada
- Ativar ou desativar dinamicamente (como um feature flag)
🔚 Conclusão
Gerar atualizações automáticas a partir do GitHub é um divisor de águas pra projetos WordPress sérios.
Se você está acompanhando essa série desde o começo, olha o nível que estamos chegando! Arquitetura sólida, logs, configurações, segurança… e agora infraestrutura de distribuição!
No próximo post, vamos falar sobre Integrações com APIs Externas — e como arquitetar isso com qualidade.
Nos vemos no próximo dia! 🚀