WordPress Extremo
- 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
- Criando Blocos Personalizados com Gutenberg e React
- Estilizando Blocos Gutenberg com CSS e Classes Dinâmicas
Hoje vamos aplicar um dos princípios mais importantes de uma arquitetura limpa: separar responsabilidades e delegar funções.
Você vai criar um serviço que será instanciado pelo Init
, seguindo a estrutura modular que começamos ontem.
Na jornada rumo ao nível extremo de desenvolvimento com WordPress, hoje vamos dar um passo essencial: organizar a lógica do plugin com classes de serviço.
A ideia é simples, mas poderosa: separar a execução de ações da lógica que as executa.
✅ Crie a primeira classe de serviço
Estrutura:
/src
/Hooks
- Init.php
/Services
- HelloService.php
HelloService.php
:
<?php
namespace WpArquiteturaExtrema\Services;
class HelloService {
public function execute() {
error_log('Executando lógica de negócio via HelloService!');
}
}
Altere a Init.php
para usar esse serviço:
<?php
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();
}
}
🎯 Por que isso importa?
- Código mais organizado e legível
- Facilidade para testar e manter
- Separação clara entre hooks (integração com o WordPress) e serviços (lógica de negócio)
💡 Dica bônus
- Crie um padrão de serviços reutilizáveis para funções como integração com APIs, validações, transformações de dados etc.
- Mais pra frente, vamos evoluir pra usar injeção de dependência automática com containers.
📌 Próximo passo (Dia 3)
Vamos refinar essa arquitetura, aplicando repositórios e camada de dados separada, simulando persistência e leitura.
📣 E você? Já separa sua lógica de negócio dos hooks no seu plugin?
Compartilha comigo nos comentários!