0
19

SHARE

Atualizações Automáticas de Plugin WordPress via GitHub

Atualizações Automáticas via GitHub.

Aprenda como implementar atualizações automáticas para plugins WordPress diretamente via GitHub com uma arquitetura profissional. Parte 13/15 da série.
Este post é a parte 14 de 15 da Série WordPress Extremo: Arquitetura e Engenharia de Plugins

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:

  1. Informa ao WordPress que existe uma nova versão
  2. Aponta para o .zip da nova versão do plugin no GitHub
  3. 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! 🚀

Navegação<< Separação Clara de Camadas: Core, Domain e InfraChecklist Final de Publicação: WordPress.org e Produção >>

Não perca mais nenhuma atualização aqui!

Ative as Notificações!

Clique aqui e, em seguida, clique em Permitir na caixa que aparecerá na parte superior da janela, próximo à barra de endereços.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! Ao se tornar um assinante do WP24Horas, você terá acesso a:

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!

Não perca mais nenhuma atualização aqui!

Tabela de Conteúdo
PUBLICIDADE
Últimos Posts
Checklist Final de Publicação - WordPress.org e Produção

Checklist Final de Publicação: WordPress.org e Produção

Separação Clara de Camadas - Core, Domain e Infra

Separação Clara de Camadas: Core, Domain e Infra

Como Criar Permissões Customizadas e Controle de Acesso em Plugins WordPress

Permissões Customizadas e Controle de Acesso em Plugins WordPress

Criando Settings Pages Profissionais no WordPress

Criando Settings Pages Profissionais no WordPress

Como Internacionalizar seu Plugin WordPress (i18n e l10n) do Jeito Certo

Internacionalização e Localização (i18n e l10n)

Segurança Profunda em Plugins WordPress

Segurança Profunda em Plugins WordPress

Você precisa estar logado para ver esta informação.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! 

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!