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 Criar um Plugin WordPress com Composer e PSR-4 – WordPress Extremo Dia 1

Por Asllan Maciel4 min de leitura
Como Criar um Plugin Profissional com Composer e PSR-4
Esta entrada é parte 1 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

Bora começar a Criar um Plugin Profissional de verdade? Aqui começa a virada de chave.

E aí, dev! Aqui é o Asllan, e hoje a gente dá o primeiro passo na jornada WordPress Extremo — que vai te levar do desenvolvimento intermediário àquele nível onde você realmente domina o WordPress como plataforma de engenharia, e não só como CMS.

A parada aqui é sair do functions.php, parar de empilhar função solta e começar a pensar como arquiteto de software.

Hoje vamos montar a estrutura base de um plugin desacoplado*, profissional, usando duas ferramentas poderosas do mundo PHP:

* Desacoplado (ou “desacoplamento”) é uma forma elegante de dizer que as partes do seu código não dependem diretamente umas das outras.


🧰 Antes de tudo: o que você precisa

Pra seguir comigo hoje, você precisa de um ambiente de desenvolvimento local já rodando WordPress.

Se você ainda não tem, pode usar:

E claro, é bom já ter uma noção básica de PHP, WordPress e saber onde fica o wp-content/plugins.


🛠️ O que vamos fazer hoje?

Hoje a gente vai criar um plugin do zero, mas não daquele jeito velho de juntar funções num arquivo só.

Vamos criar uma estrutura organizada, modular, com Composer e PSR-4.

Mas calma… que raios são Composer e PSR-4?

📦 Composer: o que é e por que usar?

O Composer é um gerenciador de dependências para PHP, tipo o “npm” do mundo PHP.

Mas além disso, ele cuida de carregar suas classes automaticamente sem você precisar escrever require_once toda hora.

Com ele, você escreve sua estrutura como um profissional e deixa o Composer se virar com o resto.

🧠 PSR-4: o que significa?

PSR-4 é um padrão de autoloading definido pela comunidade PHP (PHP-FIG). Ele diz assim:

“Se sua classe se chama Wp24h\Services\MinhaClasse, ela precisa estar na pasta src/Services/MinhaClasse.php.”

Ou seja, ele liga o namespace da sua classe com o caminho do arquivo — e o Composer entende isso e carrega tudo pra você.
Nada de require_once. Tudo limpo, automático e profissional.


🚀 Mão na massa: Criando nosso Plugin Desacoplado

1. Crie a pasta do plugin

Primeiramente, no seu wp-content/plugins, crie uma pasta:

wp-arquitetura-extrema/

2. Inicie o Composer

Navegue até essa pasta no terminal e execute:

composer init

Pode aceitar os padrões sugeridos, mas na parte do autoload a gente vai mexer manualmente.


3. Configure o autoload PSR-4

No composer.json, adicione isso:

"autoload": {
  "psr-4": {
    "WpArquiteturaExtrema\\": "src/"
  }
}

Isso quer dizer: “Composer, toda vez que eu chamar uma classe que começa com WpArquiteturaExtrema\, procure dentro da pasta src/”.

Depois disso, rode:

composer dump-autoload

Pronto! Agora qualquer classe que você criar com esse namespace e dentro da pasta src vai ser automaticamente carregada.


4. Estrutura do plugin

Desse modo, vamos organizar o plugin assim:

wp-arquitetura-extrema/
├── composer.json
├── vendor/
├── wp-arquitetura-extrema.php
└── src/
    ├── Hooks/
    │   └── Init.php
    ├── Services/
    └── Repositories/

Essa estrutura vai crescer muito ainda — mas hoje a gente vai só ativar um hook básico desacoplado.


5. Criando nosso Primeiro hHook com Classe

src/Hooks/Init.php

<?php
namespace WpArquiteturaExtrema\Hooks;

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

    public function say_hello() {
        error_log('WordPress Arquitetura Extrema iniciada!');
    }
}

6. Arquivo principal do plugin

wp-arquitetura-extrema.php

<?php
/**
 * Plugin Name: WP Arquitetura Extrema
 * Description: Plugin com arquitetura organizada seguindo boas práticas
 * Version: 1.0.0
 * Author: Asllan Maciel
 * License: GPL2
 */

defined('ABSPATH') or die('No script kiddies please!');

if (file_exists(__DIR__ . '/vendor/autoload.php')) {
    require_once __DIR__ . '/vendor/autoload.php';
}

use WpArquiteturaExtrema\Hooks\Init;

(new Init())->register();

defined('ABSPATH') or die(...); é uma proteção simples e eficaz pra garantir que seus arquivos PHP só rodem dentro do WordPress — e nunca diretamente pelo navegador.


7. Ativando o debug para testar

No seu wp-config.php, ative:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Depois de ativar o plugin, veja se aparece no arquivo wp-content/debug.log:

WordPress Arquitetura Extrema iniciada!

Se sim, tudo funcionou! 🎉


📚 O que aprendemos hoje

  • Como criar a estrutura de um plugin desacoplado
  • O que são Composer e PSR-4, e como usar no WordPress
  • Como organizar seu código com padrão profissional
  • Como acionar hooks com classes ao invés de funções soltas

🧭 E agora?

Esse é só o começo. No Dia 2, a gente vai criar classes de serviço e delegar funções, seguindo princípios de Clean Code e separação de responsabilidades.


💬 Bora trocar ideia?

Ficou com dúvida sobre Composer, PSR-4 ou estrutura de plugin?

Comenta aí ou me chama nas redes:
👉 @wp24horas


🎓 Quer se aprofundar mesmo?

Se você quiser acelerar sua evolução, temos:

  • Mentoria Técnicas Personalizadas
  • Cursos voltados para WordPress Profissional
  • Acompanhamento para Criar Produtos e Serviços com WP

👉 Em breve aqui no wp24horas.com.br

WordPress Extremo: Arquitetura e Engenharia de Plugins

Como Usar Serviços em Plugins para Código Limpo e Desacoplado – WordPress Extremo Dia 2

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.