Block pattern não aparece no inseridor: registre pelo arquivo em /patterns

O register_block_pattern está lá no functions.php, roda sem erro nenhum, o cache já foi limpo duas vezes e a aba Padrões do inseridor continua sem o padrão. Na maioria das vezes o motivo é chamada fora do hook init. No WordPress 6.9 dá pra pular esse problema inteiro: um arquivo dentro de patterns/, no tema, que o core lê sozinho.

O arquivo que o WordPress lê sozinho

Crie wp-content/themes/seu-tema/patterns/chamada-botao.php. O cabeçalho de comentário é o registro em si: Title e Slug são obrigatórios, sem um deles o core dispara um _doing_it_wrong e pula o arquivo. O resto entra conforme a necessidade. Logo abaixo do cabeçalho vai a marcação dos blocos, copiada do editor pela opção Copiar todos os blocos.

<?php
/**
 * Title: Chamada com botão
 * Slug: seutema/chamada-botao
 * Description: Faixa de destaque com título, texto curto e botão.
 * Categories: banner, call-to-action
 * Keywords: chamada, cta, destaque
 * Viewport Width: 1280
 * Inserter: yes
 */
?>

Funciona em tema de blocos e em tema clássico, e vale também pro tema pai: o core varre a pasta dos dois no init e deixa o filho sobrescrever o slug repetido. Não precisa de hook nem de add_theme_support.

As armadilhas que sobram

  • Inserter: no registra o padrão mas some com ele do inseridor. Só use isso em padrão que serve de área de template ou que é preso a um bloco.
  • Slug sem namespace funciona, mas colide com padrão de plugin de mesmo nome. Prefixe com o tema.
  • Desde o 6.4 os padrões do tema ficam em cache. Enquanto você edita o arquivo, ligue o modo de desenvolvimento no wp-config.php.
define( 'WP_DEVELOPMENT_MODE', 'theme' );

# conferir o que está registrado de verdade
sudo -u www-data wp eval 'foreach (WP_Block_Patterns_Registry::get_instance()->get_all_registered() as $p) { echo $p["name"], PHP_EOL; }'

Se o slug sair nessa lista e mesmo assim não aparecer no editor, olhe a categoria: categoria que ninguém registrou não vira aba própria, e o padrão fica só na listagem geral, onde ninguém procura.

Se travou nisso e precisa de ajuda, me chama aqui.

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *