Como criar plugin no WordPress: passo a passo e boas práticas

Escrito e revisado por pessoas

Compartilhar:

Como criar plugin no WordPress: passo a passo e boas práticas

RESPOSTA RÁPIDA

Criar plugin no WordPress começa com uma pasta em wp-content/plugins e um arquivo PHP com o cabeçalho Plugin Name; a partir daí, o código conversa com o núcleo por meio de hooks. Antes do código, porém, vale confirmar se a função precisa de plugin próprio ou se um plugin mantido por terceiros já resolve.

Principais pontos do artigo

  • Plugin próprio compensa quando a regra é do negócio, não existe pronta e precisa continuar funcionando depois de uma troca de tema.
  • O único campo obrigatório do cabeçalho é Plugin Name; Requires at least, Requires PHP e Requires Plugins evitam problemas de compatibilidade e dependência.
  • Ativação, desativação e desinstalação têm ganchos próprios, e apagar opções e tabelas do banco é trabalho da desinstalação.
  • A validação acontece em homologação, com log de depuração ativo e teste de ativar, desativar e desinstalar.
O que é WordPress: como funciona, para que serve e quando usar

O que é um plugin no WordPress

Plugin é um pacote de código PHP, às vezes com CSS, JavaScript e imagens, que acrescenta ou altera funções do WordPress sem mexer nos arquivos do núcleo. Cada plugin se conecta à plataforma por hooks: pontos predefinidos onde um código pode interagir com outro ou modificá-lo, segundo o manual de plugins[1]. Para o panorama da plataforma, o guia sobre o que é WordPress explica como núcleo, temas e plugins se combinam.

O tema cuida da apresentação e o plugin, da função. Uma regra de negócio escrita no functions.php some junto com o tema numa troca de layout, e esse costuma ser o motivo para levar código solto para um plugin. Plugins também estendem outros plugins: uma extensão do WooCommerce, plugin de loja mantido pela Automattic, é um plugin que usa os hooks dele, e o mesmo vale para quem registra blocos para o editor de blocos do projeto Gutenberg ou widgets para o Elementor.

Quando criar um plugin próprio

O esforço de um plugin próprio se justifica quando aparece pelo menos uma destas situações:

  • a regra é específica do negócio, como cálculo de frete por região ou fluxo de aprovação de conteúdo;
  • o site precisa se integrar a um sistema interno (ERP, CRM, API de parceiro) sem conector pronto;
  • há tipos de conteúdo, campos ou permissões que precisam existir com qualquer tema;
  • o functions.php acumulou regras de negócio que pouco têm a ver com a apresentação.

Se um plugin mantido, com atualizações frequentes, já cobre a necessidade, escrever do zero costuma sair mais caro ao longo do tempo, já que todo plugin próprio exige manutenção a cada versão nova do WordPress e do PHP. Para necessidades pequenas de layout, que cabem no tema, o caminho está no guia sobre como criar widget WordPress.

O que é preciso antes de começar

  • Escopo escrito: o que o plugin faz, em quais telas e com quais dados.
  • Prefixo único: o manual de boas práticas[2] pede pelo menos 4 a 5 caracteres em funções, classes e variáveis globais.
  • Ambiente de homologação: cópia do site com o mesmo tema, plugins e versão de PHP.
  • Editor de código e controle de versão: o código do plugin vive num repositório, e a publicação no site sai dele por deploy automatizado (uma GitHub Action, por exemplo), sem upload manual de arquivos.
  • WP-CLI (opcional): agiliza a criação da estrutura, que já vem preparada para testes automatizados com PHPUnit.

Passo a passo para criar plugin no WordPress

1. Criar a estrutura (WP-CLI ou gerenciador de arquivos). O comando wp scaffold plugin sv-avisos gera o arquivo principal, readme.txt, phpunit.xml.dist, composer.json e as pastas tests e bin, segundo a documentação do WP-CLI[3]. Sem WP-CLI, basta criar a pasta sv-avisos em wp-content/plugins com o arquivo sv-avisos.php.

2. Escrever o cabeçalho (editor de código, topo do arquivo principal). Pelas regras de cabeçalho[4], só Plugin Name é obrigatório. Os campos usuais, com valores de exemplo, dentro do comentário PHP:

  • Plugin Name: SV Avisos
  • Description: menos de 140 caracteres
  • Version: 1.0.0
  • Requires at least e Requires PHP: versões mínimas testadas
  • Requires Plugins: slugs do diretório WordPress.org separados por vírgula, como woocommerce; o campo tem efeito do WordPress 6.5 em diante, segundo o anúncio das dependências de plugin[5]
  • License: GPLv2 or later
  • Text Domain: sv-avisos
  • Update URI: do WordPress 5.8 em diante, segundo o anúncio do campo[6]; em plugin privado, use a URL do seu servidor de atualização ou Update URI: false, e o WordPress não oferece a atualização de um plugin homônimo do diretório

3. Bloquear o acesso direto ao arquivo (logo abaixo do cabeçalho). Código: if ( ! defined( ‘ABSPATH’ ) ) { exit; }

4. Conectar ao WordPress com hooks (arquivo principal ou pasta includes). Uma action executa uma tarefa e não devolve nada; um filter recebe um valor, modifica e devolve. Código: add_filter( ‘the_content’, ‘svav_aviso’ ); function svav_aviso( $content ) { if ( is_singular( ‘post’ ) && in_the_loop() && is_main_query() ) { $content .= ‘

‘ . esc_html__( ‘Conteúdo revisado pela equipe editorial.’, ‘sv-avisos’ ) . ‘

‘; } return $content; }

5. Tratar o ciclo de vida (arquivo principal e uninstall.php). Cada momento tem seu gancho, conforme a documentação de ativação e desativação[7] e de desinstalação[8]; a tabela abaixo resume.

6. Ativar em homologação (painel Plugins ou wp plugin activate sv-avisos). A validação começa aqui.

Momento Gancho Uso típico
Ativação register_activation_hook( __FILE__, ‘funcao’ ) Criar opções padrão e, se houver tipo de conteúdo, chamar a mesma função de registro usada no hook init e em seguida flush_rewrite_rules(); o registro do tipo de conteúdo continua no init, a cada carregamento
Desativação register_deactivation_hook( __FILE__, ‘funcao’ ) Limpar cache e arquivos temporários, desfazer regras de reescrita
Desinstalação uninstall.php ou register_uninstall_hook() Apagar opções e tabelas próprias; uninstall.php confere a constante WP_UNINSTALL_PLUGIN antes

Quanto tempo leva

O prazo acompanha o escopo. Um filtro simples como o do exemplo e um plugin com tela de configuração, integração externa e tabelas próprias são trabalhos de tamanhos muito diferentes, embora os dois passem por homologação e revisão de segurança.

Num plugin simples de resumo de posts por IA, feito pela Studio Visual para o portal institucional da Igreja Adventista em 2026, o plano dividiu o trabalho em quatro etapas: análise, desenvolvimento do plugin, homologação e QA. Homologação e QA ocuparam parte relevante do prazo, e quando há integração externa é frequente o plugin passar da estimativa inicial.

Como deixar o plugin seguro

1. Validar e sanitizar a entrada: sanitize_text_field(), sanitize_email() e similares antes de salvar.

2. Escapar a saída: esc_html(), esc_attr() e esc_url() conforme o contexto.

3. Usar nonce em formulários e ações: wp_nonce_field() na criação e check_admin_referer() ou wp_verify_nonce() na verificação.

4. Conferir permissão: a página de nonces[9] orienta proteger as funções com current_user_can(), porque nonce protege contra requisição forjada e a documentação desaconselha usá-lo para controle de acesso.

5. Consultar o banco com segurança: consultas preparadas com o método prepare() da classe wpdb, sem concatenar dado do usuário no SQL.

6. Proteger rotas REST e ações AJAX: rotas registradas com register_rest_route() precisam de permission_callback com current_user_can(), exigência do WordPress 5.5 em diante segundo as notas de mudança da REST API[10], e ações AJAX (wp_ajax_*) conferem nonce e permissão, como os formulários.

Erros mais comuns ao criar plugin

  • Nomes sem prefixo: a função colide com outra de mesmo nome e o site para com erro fatal.
  • Apagar dados na desativação: quem desativa para testar perde configurações; a limpeza fica na desinstalação.
  • Carregar código de painel no site inteiro: o manual sugere carregar arquivos de administração só quando is_admin() é verdadeiro.
  • Confiar só no nonce: sem current_user_can(), qualquer usuário logado pode disparar a ação.
  • Não declarar Requires PHP e Requires at least: o plugin é ativado em ambiente incompatível e quebra.
  • Testar direto em produção: o erro aparece para o visitante antes de aparecer para a equipe.
  • ZIP com pasta de nome errado: um ZIP cuja pasta interna tem nome diferente do slug (por exemplo, sv-avisos-1.1.0/) cria uma segunda cópia do plugin, e a versão antiga continua ativa. O ZIP precisa conter a pasta sv-avisos/ com o arquivo principal dentro.

Como validar que deu certo

1. O plugin ativa sem aviso no painel e aparece como ativo em wp plugin list.

2. Com WP_DEBUG e WP_DEBUG_LOG ativos em homologação, o arquivo wp-content/debug.log fica sem avisos do plugin, conforme a página de depuração do WordPress[11], que desaconselha a depuração em site no ar.

3. A função entregue funciona no site, para o perfil de usuário certo e bloqueada para os demais.

4. Desativar mantém os dados; desinstalar remove opções e tabelas.

5. Depois de cada core update e de cada atualização de PHP, o teste se repete.

O que fazer quando dá errado

Se o site parar depois da ativação, o primeiro passo é desativar o plugin, pelo painel ou com wp plugin deactivate sv-avisos. Sem acesso ao painel, renomeie por FTP ou pelo gerenciador de arquivos só a pasta do plugin suspeito (sv-avisos para sv-avisos-off). Se o site continuar fora do ar, renomeie a pasta plugins inteira, como orientam as perguntas frequentes de solução de problemas do WordPress[12]. Com o site de volta, o debug.log da homologação mostra a linha do erro, e um conflito com outro plugin aparece ao reativar um por vez.

O que a experiência da Studio Visual mostra

A gente desenvolve plugins próprios para os sites WordPress que cria e mantém, e nas migrações é comum encontrar restos de plugins removidos ainda carregados no servidor ou no banco.

Em junho de 2026, a Studio Visual criou para a Revista Oeste, publicação digital de política que publica cerca de 200 matérias por dia, um plugin que gera o resumo de cada artigo por IA no momento da publicação, com edição liberada para o redator. No dia da estreia saíram 7 versões, por causa de aspas tipográficas em atributos HTML. Semanas depois, os resumos passaram a atribuir os fatos a meses errados. Ajustar o prompt não resolveu, porque o modelo não recebia a data de publicação. A correção foi enviar essa data junto com o texto, validada em cerca de 60 chamadas reais.

OPINIÃO DE ESPECIALISTA

“Plugin próprio não é a escolha certa quando um plugin mantido por terceiros resolve a regra ou quando ninguém vai cuidar do código depois da entrega. Tarefa de plugin sob medida com frequência passa da estimativa. No plugin de resumo por IA da Revista Oeste, o problema real apareceu depois da publicação: o modelo errava datas, e ajustar o prompt não resolveu. Plugin próprio é produto que pede manutenção, e se o orçamento só cobre a construção, prefiro configurar uma solução consolidada e documentar o limite.”

joao pedro tiberio João Pedro Tibério Líder Técnico, Infraestrutura e Confiabilidade (DevOps e IA)

Vale fazer sozinho ou contratar

Um filtro pequeno, testado em homologação, está ao alcance de quem conhece PHP e a documentação do WordPress. Já um plugin com integração, dados de clientes ou pagamento pede revisão de segurança e alguém para manter o código nas próximas versões. Quando o plugin faz parte de um projeto maior, as etapas estão no guia sobre como criar site em WordPress.

Para plugins sob medida dentro de um projeto WordPress, a página de especialista em WordPress mostra como a Studio Visual trabalha com desenvolvimento na plataforma.

Referências

As fontes citadas neste artigo, na ordem em que aparecem no texto.

  1. 1
    manual de plugins

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  2. 2
    manual de boas práticas

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  1. 3
    documentação do WP-CLI

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  2. 4
    regras de cabeçalho

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  3. 5
    anúncio das dependências de plugin

    WordPress.org · Dados consultados em 14 de outubro de 2026

  4. 6
    anúncio do campo

    WordPress.org · Dados consultados em 14 de outubro de 2026

  5. 7
    ativação e desativação

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  6. 8
    desinstalação

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  7. 9
    página de nonces

    WordPress Developer Resources

  8. 10
    notas de mudança da REST API

    WordPress.org · Dados consultados em 14 de outubro de 2026

  9. 11
    página de depuração do WordPress

    WordPress Developer Resources · Dados consultados em 25 de setembro de 2026

  10. 12
    perguntas frequentes de solução de problemas do WordPress

    WordPress.org · Dados consultados em 25 de setembro de 2026

Especialista em WordPress

Especialistas em WordPress na Studio Visual

Desenvolvimento, manutenção e evolução de sites WordPress para empresas, com o mesmo time do projeto ao suporte.

Compartilhar:

Levar para a IA:

Vamos bater um papo sobre suas necessidades?

Queremos conhecer você e sua empresa!

Compartilhe conosco os desafios digitais e as necessidades técnicas que você enfrenta. Estamos aqui para ajudar, permitindo que você se concentre no que realmente importa: os resultados.