WP24Horas
PARCEIRO RECOMENDADO Vai colocar um WordPress no ar? Comece com uma hospedagem que acompanha o seu projeto. Conhecer a HostGator link patrocinado

Desenvolvimento e Programação

Como Usar Repositórios em Plugins para Separar Lógica de Dados – WordPress Extremo Dia 3

Por Asllan Maciel2 min de leitura
Como Usar Repositórios em Plugins para Separar Lógica de Dados
Esta entrada é parte 3 de 15 na série WordPress Extremo: Arquitetura e Engenharia de Plugins

WordPress Extremo: Arquitetura e Engenharia de Plugins

Como Criar um Plugin Profissional com Composer e PSR-4

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 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

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

Injeção de Dependência Manual em Plugins WordPress – WordPress Extremo Dia 4

Criando Hooks Personalizados com do_action e apply_filters

Hooks Avançados no WordPress: apply_filters, do_action e boas práticas

Como Criar Comandos WP-CLI Personalizados para Plugins

Criando Comandos WP-CLI Personalizados para Plugins WordPress

Como Implementar um Sistema de Logs Profissional em Plugins WordPress

Como Gerenciar Logs e Erros Internos em Plugins WordPress (Do Jeito Certo)

Como Tratar Erros e Exceptions em Plugins WordPress do Jeito Certo

Tratamento de Erros e Uso Inteligente de Exceptions em Plugins WordPress

Segurança Profunda em Plugins WordPress

Segurança Profunda em Plugins WordPress

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

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

Criando Settings Pages Profissionais no WordPress

Criando Settings Pages Profissionais no WordPress

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

Permissões Customizadas e Controle de Acesso em Plugins WordPress

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

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

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

Atualizações Automáticas via GitHub.

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

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

E aí, dev! Aqui é o Asllan, e no Dia 3 da nossa jornada WordPress Extremo, vamos dar mais um passo rumo à arquitetura sólida: separar a lógica de acesso a dados usando a famosa camada de Repositórios.

Talvez você esteja se perguntando:

“Mas Asllan, WordPress já tem $wpdb, get_posts()… pra quê repositório?”

Eu te explico 👇


🧠 O que é um Repositório?

Um Repositório é uma classe responsável por centralizar o acesso aos dados.

Em vez de espalhar chamadas ao banco ou queries por todo o código, você coloca tudo em um único lugar, organizado e com nomes claros.

🧽 Resultado:

  • Código mais limpo
  • Fácil de testar
  • Fácil de trocar o tipo de armazenamento depois (ex: REST API, banco externo, etc.)

🎯 Exemplo no contexto WordPress:

Imagine que seu plugin precisa listar todos os usuários com role editor.

📉 Forma “bagunçada”:

$users = get_users(['role' => 'editor']);

Você repete isso em vários lugares.


📦 Forma com repositório:

$repository = new UserRepository();
$editors = $repository->getEditors();

Agora a lógica está isolada, limpa e pronta pra crescer.


🧰 Mão na massa – Criando nosso primeiro Repository

Estrutura de pastas:

/src
  /Hooks
    - Init.php
  /Services
    - HelloService.php
  /Repositories
    - UserRepository.php

UserRepository.php

<?php
namespace WpArquiteturaExtrema\Repositories;

class UserRepository {
    public function getEditors() {
        return get_users([
            'role' => 'editor'
        ]);
    }
}

HelloService.php (atualizado pra usar o repo)

<?php
namespace WpArquiteturaExtrema\Services;

use WpArquiteturaExtrema\Repositories\UserRepository;

class HelloService {
    public function execute() {
        $repo = new UserRepository();
        $editors = $repo->getEditors();

        foreach ($editors as $user) {
            error_log("Editor encontrado: " . $user->display_name);
        }
    }
}

Init.php continua igual:

namespace WpArquiteturaExtrema\Hooks;

use WpArquiteturaExtrema\Services\HelloService;

class Init {
    public function register() {
        add_action('init', [$this, 'init_plugin']);
    }

    public function init_plugin() {
        $service = new HelloService();
        $service->execute();
    }
}

🧠 Conclusão do Dia 3

  • Usamos a camada de Repositório pra isolar o acesso a dados
  • Evitamos acoplamento entre service e query
  • Preparamos o terreno pra evoluir pra APIs, filtros avançados, cache, etc.

🔜 Próximo passo: Dia 4

Amanhã vamos introduzir injeção de dependência manual para facilitar ainda mais a arquitetura, criando um container simples de serviços.

WordPress Extremo: Arquitetura e Engenharia de Plugins

Como Usar Serviços em Plugins para Código Limpo e Desacoplado – WordPress Extremo Dia 2 Injeção de Dependência Manual em Plugins WordPress – WordPress Extremo Dia 4

Sobre o autor

Asllan Maciel

Asllan Maciel, Fundador do WP24Horas, Consultor de Marketing Digital e amante do Empreendedorismo Digital. Tem um caso de amor com o WordPress.