0
68

SHARE

Como Carregar Scripts e Estilos no WordPress Apenas Quando Necessário

Scripts e Estilos Condicionais: Carregando apenas quando necessário

Aprenda a carregar scripts e estilos apenas quando os blocos estiverem presentes na página, otimizando o desempenho do WordPress.
Este post é a parte 16 de 20 da Série WordPress Extremo: Gutenberg + React + Blocos Customizados

Fala, dev! 👋

Você sabia que carregar todos os scripts e estilos de todos os blocos o tempo todo pode deixar seu site mais lento — especialmente se você estiver criando muitos blocos customizados?

Hoje vamos ver como carregar os scripts e estilos do seu bloco WordPress apenas quando ele estiver presente na página, com base no has_block() e também usando filtros no enqueue_block_assets.


🧠 Problema: Tudo é carregado, mesmo sem uso

Por padrão, ao registrar blocos com register_block_type(), os scripts e estilos são enfileirados sempre — mesmo que o bloco não apareça no post ou página atual.

Isso pode prejudicar o desempenho, especialmente em sites com muitos blocos, temas pesados e conteúdo dinâmico.


✅ Solução: Carregamento Condicional

Existem dois métodos principais para resolver isso:


🧩 1. Usar enqueue_block_assets com has_block()

add_action('enqueue_block_assets', function () {
    if (is_singular() && has_block('wp24h/alert-box')) {
        wp_enqueue_style('wp24h-alert-box');
    }
});

Isso carrega o estilo somente se o bloco estiver no conteúdo da página atual.


🧩 2. Usar render_callback e enfileirar scripts manualmente

Se seu bloco for dinâmico (com render_callback), você pode carregar os assets dentro da função de renderização:

register_block_type(__DIR__ . '/blocks/my-dynamic-block', [
    'render_callback' => function ($attributes, $content) {
        wp_enqueue_style('wp24h-my-dynamic-block');
        wp_enqueue_script('wp24h-my-dynamic-block');
        return "<div class=\"my-block\">{$content}</div>";
    }
]);

Ideal para blocos dinâmicos que precisam de lógica PHP no frontend.


🛠️ Exemplo completo com has_block()

Passo 1: block.json

{
  "apiVersion": 2,
  "name": "wp24h/alert-box",
  "title": "Caixa de Alerta",
  "editorScript": "wp24h-alert-box",
  "style": "wp24h-alert-box",
  "editorStyle": "wp24h-alert-box"
}

Passo 2: Registro no PHP (Init.php ou functions.php)

add_action('enqueue_block_assets', function () {
    if (is_singular() && has_block('wp24h/alert-box')) {
        wp_enqueue_style('wp24h-alert-box');
    }
});

O estilo não será carregado se o bloco não estiver presente no post. Simples, leve e eficaz.


💡 Dica: Evite carregar tudo no init

Não enfileire diretamente com wp_enqueue_style() na inicialização. Prefira registrar com wp_register_style() e só carregar quando for necessário com wp_enqueue_style().


🧪 Resultado

Você terá blocos muito mais leves no frontend, economizando banda, melhorando o tempo de carregamento e mantendo a performance do seu site WordPress sob controle.

Navegação<< Internationalização de Blocos Gutenberg (i18n)Uso de Slots e Templates Personalizados >>

Não perca mais nenhuma atualização aqui!

Ative as Notificações!

Clique aqui e, em seguida, clique em Permitir na caixa que aparecerá na parte superior da janela, próximo à barra de endereços.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! Ao se tornar um assinante do WP24Horas, você terá acesso a:

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!

Não perca mais nenhuma atualização aqui!

Tabela de Conteúdo
PUBLICIDADE
Últimos Posts
Listagem e Detalhes de Posts WordPress com API REST no Next.js

Listagem de Posts e Roteamento Dinâmico no Next.js

Frontend com Next.js - Setup e Integração Inicial com WordPress

Frontend com Next.js: Setup e Integração Inicial

Configurando o WordPress como Backend Headless

Configurando o WordPress como Backend Headless

REST API do WordPress

REST API do WordPress: Visão Geral

Introdução ao WordPress Headless

Introdução ao WordPress Headless

Como Distribuir Seus Blocos Gutenberg em Plugins ou no GitHub

Distribuindo Seus Blocos: Plugins, Repositório e GitHub

Você precisa estar logado para ver esta informação.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! 

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!