📩 Fique por dentro das novidades com a nossa newsletter

Plug in de bloco no Gutenberg: Crie o seu em 5 passos

Conheça a loja da FULL Services

Plugins premium, suporte de verdade e tudo o que seu site WordPress precisa em um só lugar.

Pergunte a uma IA sobre este artigo

Obtenha um resumo ou tire dúvidas com seu assistente favorito

Neste artigo

Um plug in de bloco é um plugin WordPress que adiciona um bloco personalizado à lista do editor Gutenberg, com edição visual própria e renderização controlada por você. Diferente de um widget de page builder, ele vive no núcleo do editor e funciona em qualquer tema compatível com blocos. A maioria dos tutoriais começa pelo código React e assusta quem chega do front-end clássico. Aqui a gente inverte: primeiro o scaffolding oficial cria o esqueleto, depois você entende cada arquivo. Em cinco passos, do terminal ao bloco publicado, você terá um plug in de bloco rodando num site real, com build de produção e metadados corretos.


Primeiros passos: Visão geral do plug in de bloco

Criar um plug in de bloco hoje leva cerca de 30 minutos do zero ao build de produção, contra os dias que a configuração manual de Webpack exigia até 2021. O caminho oficial parte do pacote @wordpress/create-block, que monta a pasta com block.json, index.js, edit.js e save.js já prontos para uso.

A tabela abaixo mapeia cada etapa ao seu objetivo e ao check que prova que ela funcionou, para você não avançar com um passo quebrado e nem perder tempo depurando um bloco que nem chegou a registrar direito.

Plug in de bloco: etapas, objetivo e check de validação
Etapa Objetivo Check de validação
Scaffolding Gerar a estrutura com create-block Pasta criada com block.json e src
block.json Declarar metadados do bloco apiVersion e name preenchidos
Edição Definir a aparência no editor Edit() retorna JSX sem erro
Build Compilar para produção Pasta build gerada por npm run build
Ativação Ativar o plugin no WordPress Bloco visível na lista do Gutenberg

A FULL recomenda começar pelo ambiente local antes de subir para produção: a gente vê no suporte que muito bloco quebra ao ir direto para o site no ar sem o npm run build rodado.


O que você precisa antes de criar um plug in de bloco

Antes de escrever a primeira linha, você precisa de três coisas: Node.js 18 ou superior, npm instalado e um WordPress 6.3+ para usar o apiVersion 3 atual. O Node é exigência do @wordpress/create-block, que roda em ambiente JavaScript, então sem ele o scaffolding nem inicia.

Um WordPress abaixo de 6.3 ainda cria blocos, mas trava no apiVersion 2, e essa diferença explica boa parte dos blocos que “somem” depois de uma atualização do core.

A pilha de ferramentas é enxuta e quase toda gratuita. Você vai usar o terminal, um editor de código como o VS Code e o wp-env ou um Local by Flywheel para subir o WordPress local. O Gutenberg já vem com a biblioteca de componentes React embutida, então você não instala React manualmente. Se você nunca mexeu com linha de comando, vale antes ler o nosso guia de como usar o editor de blocos do WordPress para conhecer o terreno onde o bloco vai viver.


Passo a passo: Criando o plug in de bloco do zero

Os cinco passos abaixo levam você do terminal vazio ao bloco ativo em produção, e cada um termina com um check objetivo. Em ambientes de teste da FULL, o fluxo completo roda em torno de 25 a 35 minutos quando o Node já está instalado e o WordPress local já está no ar.

A ordem importa: pular o build antes da ativação é o erro número um que chega ao suporte. Siga na sequência e valide cada passo antes de seguir para o próximo.

Passo 1: Gere o esqueleto com create-block

Rode npx @wordpress/create-block@latest meu-bloco na pasta de plugins do WordPress. O comando baixa o pacote oficial e cria uma pasta completa com block.json, src/index.js, src/edit.js, src/save.js e o package.json de build. Para um bloco dinâmico renderizado no servidor, adicione --variant=dynamic, que gera também o render.php. Em segundos você tem um plug in de bloco já funcional, antes de tocar em qualquer código.

Passo 2: Configure o block.json

Abra o block.json e revise os campos apiVersion, name, title e category. O apiVersion deve ser 3 em WordPress 6.3 ou superior; o name segue o padrão namespace/bloco e precisa ser único no site. O title é o nome que aparece na busca do editor. Esse arquivo é a fonte única de verdade do bloco desde o WordPress 5.8, lido pela função register_block_type no PHP.

Passo 3: Defina a edição no edit.js

No src/edit.js, a função Edit() retorna o JSX que o usuário vê e manipula dentro do editor. É aqui que você adiciona campos de texto, controles de cor e a barra lateral de configurações com os componentes de @wordpress/components. Para um primeiro plug in de bloco, mantenha simples: um parágrafo editável com RichText já demonstra o ciclo completo. O useBlockProps() conecta seu markup ao sistema de estilos do bloco.

Passo 4: Compile com npm run build

Entre na pasta do bloco e rode npm install seguido de npm run build. O build compila o src para a pasta build, que é o que o WordPress de fato carrega. Durante o desenvolvimento, use npm run start para recompilar a cada salvamento. Sem a pasta build gerada, o registerBlockType no index.js não chega ao navegador e o bloco simplesmente não aparece na lista do Gutenberg.

Passo 5: Ative e valide no editor

Vá em Plugins no painel do WordPress, ative o seu plug in de bloco e abra um post novo. Clique no “+” do editor, busque pelo title que você definiu e insira o bloco. Edite o conteúdo, salve e visualize no front-end para confirmar a renderização. Se o bloco aparece no editor mas sai vazio na página, o problema costuma estar no save.js ou no atributo render do block.json apontando para o arquivo errado.


Bloco estático ou dinâmico: Qual escolher no plug in de bloco

A escolha entre bloco estático e dinâmico define como o conteúdo é salvo e onde ele é montado, e muda 100% da manutenção futura. No bloco estático, o save.js grava o HTML final direto no banco de dados, o que é rápido e ideal para conteúdo fixo como um aviso ou um botão simples.

No dinâmico, o render.php monta o HTML a cada visita, lendo $attributes em tempo real, o que serve a dados que mudam, como uma lista de posts recentes.

A diferença prática aparece na hora de evoluir o bloco. Um bloco estático que você altere depois pode gerar o temido “block validation error”, porque o HTML salvo não bate mais com o save() novo. O bloco dinâmico não tem esse risco: como o render.php gera tudo na hora, mudar o template não invalida o conteúdo antigo. Para quem vai manter o bloco por anos, vale conhecer também o caminho com criar blocos customizados com ACF PRO, que reduz a parte de código a um mínimo.


Erros comuns que travam um plug in de bloco

A maioria dos chamados sobre blocos que “não funcionam” no suporte da FULL cai em três causas previsíveis, todas detectáveis em menos de cinco minutos. A primeira é o apiVersion do block.json fixado em 3 num WordPress abaixo de 6.3: o bloco carrega sem erro visível no editor, mas some da lista após atualizar o core.

A segunda causa é a ausência da pasta build, esquecida quando o desenvolvedor sobe o src cru para o servidor sem rodar o passo de compilação.

A terceira causa é o render.php declarado no block.json sem o atributo render apontando o caminho certo: o bloco aparece no editor mas renderiza vazio no front-end. Para depurar, abra o console do navegador e procure por erros de registerBlockType; eles denunciam build faltando ou nome de bloco duplicado. Quem precisa mover blocos entre sites sem reescrever nada deve olhar o guia de como exportar e importar blocos no Gutenberg, que evita parte desses conflitos de versão.


Plug in de bloco ou page builder: Quando cada um faz sentido

Na maior parte dos projetos de cliente que passam pela base da FULL, a decisão entre um plug in de bloco nativo e um page builder se resume a quem vai manter o site no dia a dia. O bloco Gutenberg é leve, versiona bem no Git e não amarra o conteúdo a um plugin específico.

Se o plugin sai, o HTML estático permanece. O bloco nativo compete por portabilidade e performance, com payload mínimo de CSS e JS no front-end.

O page builder, como o Elementor, compete por velocidade de montagem visual sem código, ideal para agências que entregam dezenas de landing pages. O custo é o lock-in: desativar o builder costuma quebrar o layout. Se a dúvida é qual usar no seu caso, o comparativo Elementor vs Gutenberg abre os dois lado a lado. E quem quer dominar o ecossistema visual encontra o passo a passo completo na categoria de Elementor da FULL, com tutoriais por nível.


Acelere o desenvolvimento com a stack certa da FULL

Montar um plug in de bloco do zero é viável, mas manter um site com blocos próprios, plugins premium e build atualizado é onde o tempo escapa. O plano PRO da FULL sai por R$849 e libera o bundle com Elementor PRO, Crocoblock, ACF PRO e mais 14 plugins ativados em um clique. Distribuído pelos sites que você gerencia, isso fica em torno de R$85 por site, o que a gente vê no suporte ser mais barato que licenciar cada plugin avulso e ainda controlar atualização um a um. Para quem desenvolve com @wordpress/create-block e ACF PRO juntos, ter as licenças centralizadas tira a fricção de renovação manual a cada ano.




Perguntas frequentes sobre plug in de bloco

É possível criar um plug in de bloco sem saber React a fundo?

Sim, é possível começar sem domínio profundo de React. O scaffolding @wordpress/create-block entrega um bloco funcional pronto, e para um plug in de bloco simples basta editar o JSX do edit.js, que é HTML com algumas chaves. React vira necessário só em blocos complexos com estado próprio. Para um aviso, um botão ou um destaque editável, o conhecimento básico de JavaScript já resolve a maior parte do trabalho no editor Gutenberg.

Por que meu bloco não aparece na lista do Gutenberg?

Na maioria dos casos, o bloco some da lista porque a pasta build não foi gerada. O registerBlockType no index.js só chega ao navegador depois do npm run build, então sem essa pasta o WordPress não tem o que carregar. Outras causas frequentes são o apiVersion 3 num WordPress abaixo de 6.3 e um name de bloco duplicado. Abrir o console do navegador costuma revelar o erro exato em segundos.

Qual a diferença entre bloco estático e bloco dinâmico?

A diferença está em onde o HTML é montado. No bloco estático, o save.js grava o HTML final no banco na hora de salvar; é rápido e bom para conteúdo fixo. No bloco dinâmico, o render.php monta o HTML a cada visita lendo os atributos em tempo real, ideal para dados que mudam. O dinâmico evita o block validation error quando você altera o template depois, porque nada fica congelado no banco de dados.

Quanto tempo leva para publicar um plug in de bloco simples?

Em ambientes de teste da FULL, um plug in de bloco simples vai do terminal ao bloco ativo em cerca de 25 a 35 minutos, com o Node.js já instalado. O scaffolding consome menos de 60 segundos, o npm install e o npm run build levam de 1 a 3 minutos, e o resto é editar o edit.js e validar no editor. Quem nunca usou linha de comando deve reservar uma hora na primeira vez para configurar o ambiente local com calma.

O que é o block.json e por que ele é obrigatório?

O block.json é o arquivo de metadados que descreve o bloco para o WordPress, com campos como apiVersion, name, title e category. Ele é o jeito canônico de registrar blocos desde o WordPress 5.8 e é lido pela função register_block_type no PHP. Sem ele, o WordPress não sabe que arquivos carregar nem como nomear o bloco. Ele centraliza a configuração num único lugar, o que torna o plug in de bloco mais simples de manter e versionar.


Próximos passos para dominar blocos no WordPress

Com o seu primeiro plug in de bloco rodando, o caminho natural é aprofundar em atributos, controles da sidebar e blocos dinâmicos que consultam o banco. Vale também entender como o PHP do WordPress monta páginas por trás, no nosso guia de criar posts e páginas com PHP, já que o render.php segue a mesma lógica. Para juntar tudo em uma trilha de aprendizado, o guia domine o Elementor reúne os materiais de criação visual e os de bloco nativo em um só lugar. O importante agora é repetir os cinco passos com um segundo bloco: a fluência vem da segunda vez, não da primeira.

Legenda: o plug in de bloco aparece na busca do editor assim que o npm run build é concluído e o plugin é ativado.

Compartilhe este conteúdo

Equipe Full Services

A FULL. é especialista em WordPress e oferece plugins premium com licenças originais, suporte técnico e instalação facilitada. Já ajudou mais de 25 mil clientes a impulsionar seus sites com performance, segurança e praticidade.

AI Shopping no Brasil: Como a IA decide quem vende

O AI shopping no Brasil já redesenha como o consumidor

A shortlist da IA: Como 3-5 marcas são escolhidas antes do clique

Entender a shortlist da ia como marcas são escolhidas é

Como fazer um AI visibility audit passo a passo

Se você não sabe se o ChatGPT recomenda a sua
Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.