0
38

SHARE

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

Aprenda a organizar melhor seu plugin WordPress usando repositórios para separar a lógica de acesso a dados. Arquitetura limpa e manutenção facilitada.
Este post é a parte 3 de 8 da Série WordPress Extremo

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.

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

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
Como Estilizar Blocos Gutenberg com CSS e Classes Dinâmicas

Estilizando Blocos Gutenberg com CSS e Classes Dinâmicas

Criando Campos Dinâmicos e InspectorControls no Gutenberg

Campos Dinâmicos e InspectorControls no Gutenberg: Deixe Seu Bloco Interativo

Criando Blocos Personalizados com Gutenberg e React

Criando Blocos Personalizados com Gutenberg e React

Como Criar Comandos WP-CLI Personalizados para Plugins

Criando Comandos WP-CLI Personalizados para Plugins WordPress

Como Funciona o apply_filters no WordPress

Como Funciona o apply_filters() no WordPress (com Exemplos Práticos)

Criando Hooks Personalizados com do_action e apply_filters

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

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!