Como adicionar um widget no WordPress: De classic widgets a blocos

Como adicionar um widget no WordPress: De classic widgets a blocos

Última verificação: 22 de setembro de 2026
10 min de leitura
Guia
500+ projetos WP

Durante mais de uma década, o sistema de widgets representou uma das características mais marcantes do ecossistema WordPress. Se um gestor de conteúdos pretendia introduzir uma barra de pesquisa lateral, exibir uma caixa com a biografia do autor ou estruturar ligações de rodapé, acedia de imediato ao menu Aparência > Widgets. A partir daí, bastava arrastar módulos pré-configurados para as zonas correspondentes do tema.

Com a evolução contínua do editor Gutenberg e a consolidação do Full Site Editing (FSE), essa arquitetura passou por uma transformação profunda. Hoje, o WordPress divide-se entre três realidades distintas: temas clássicos com widgets tradicionais, temas clássicos com widgets baseados em blocos e temas modernos de blocos onde o menu de widgets foi inteiramente substituído por partes de modelo (Template Parts).

Neste artigo técnico, exploramos as nuances de cada uma destas abordagens, como programar e registar novas áreas no código e como garantir uma transição sem falhas em ambientes de produção.

Para compreender como estruturamos soluções corporativas com alta velocidade e código limpo, consulte o nosso serviço de desenvolvimento em WordPress.

#As três fases da arquitetura de widgets no WordPress

Antes de alterar qualquer configuração no painel de controlo, é essencial compreender em que fase arquitetural o seu tema atual se enquadra:

  1. A era dos widgets clássicos (anterior ao WordPress 5.8): Os temas registavam barras laterais através da função register_sidebar(), e os utilizadores manipulavam módulos herdados da classe WP_Widget através de formulários com campos predefinidos.
  2. A transição para blocos nos widgets (WordPress 5.8 em diante): O ecrã clássico em Aparência > Widgets foi substituído pelo próprio editor Gutenberg. Qualquer bloco da biblioteca padrão pode agora ser inserido numa barra lateral ou coluna de rodapé.
  3. Full Site Editing e Block Themes (WordPress 6.0 e posteriores): Em temas assentes no ficheiro theme.json e em modelos HTML (como Twenty Twenty-Four ou Twenty Twenty-Five), o menu Widgets deixa de existir. Toda a edição visual passa para o Site Editor.

#Abordagem 1: Blocos nas áreas de widgets em temas clássicos

Se o seu projeto utiliza temas consolidados como Astra, GeneratePress, OceanWP ou um tema personalizado desenvolvido especificamente para a sua empresa, o menu Aparência > Widgets continua presente.

Contudo, ao aceder a este ecrã, deparar-se-á com a interface de blocos. Cada barra lateral registada no tema atua como um contentor Gutenberg independente.

#Como adicionar um bloco a uma barra lateral

  1. No painel de administração do WordPress, navegue até Aparência > Widgets.
  2. Clique no cabeçalho da barra lateral ou área de rodapé pretendida (por exemplo, Barra Lateral Principal).
  3. Clique no botão Inserir bloco (+) para abrir o catálogo.
  4. Escolha o bloco necessário: Pesquisa, Artigos recentes, Imagem, Grupo ou Parágrafo.
  5. Configure os parâmetros visuais no painel lateral direito (espaçamentos, paleta de cores e tipografia).
  6. Clique no botão azul Atualizar no canto superior direito para guardar as alterações na base de dados.

Esta abordagem permite uma grande liberdade criativa à equipa editorial, eliminando a dependência de shortcodes rudimentares ou de código HTML personalizado.

#Registo técnico de áreas de widgets via PHP

Para os programadores que constroem ou mantêm temas personalizados, o registo de barras laterais continua a ser executado através do hook widgets_init:

<?php
declare(strict_types=1);

/**
 * Regista as áreas de widgets e barras laterais do tema.
 */
function wppoland_registar_barras_laterais(): void {
    register_sidebar([
        'name'          => __('Barra Lateral Principal', 'wppoland'),
        'id'            => 'barra-lateral-principal',
        'description'   => __('Apresentada junto aos artigos de blogue e páginas de arquivo.', 'wppoland'),
        'before_widget' => '<section id="%1$s" class="widget-item %2$s">',
        'after_widget'  => '</section>',
        'before_title'  => '<h3 class="widget-titulo">',
        'after_title'   => '</h3>',
    ]);

    register_sidebar([
        'name'          => __('Coluna de Rodapé 1', 'wppoland'),
        'id'            => 'rodape-col-1',
        'description'   => __('Primeira coluna no rodapé geral do website.', 'wppoland'),
        'before_widget' => '<div id="%1$s" class="rodape-widget %2$s">',
        'after_widget'  => '</div>',
        'before_title'  => '<h4 class="rodape-titulo">',
        'after_title'   => '</h4>',
    ]);
}
add_action('widgets_init', 'wppoland_registar_barras_laterais');

Para apresentar a barra lateral no ficheiro de modelo correspondente (por exemplo, sidebar.php), utiliza-se a função nativa dynamic_sidebar():

<?php if (is_active_sidebar('barra-lateral-principal')) : ?>
    <aside id="conteudo-secundario" class="area-barra-lateral" role="complementary">
        <?php dynamic_sidebar('barra-lateral-principal'); ?>
    </aside>
<?php endif; ?>

O identificador id deve manter-se imutável ao longo da vida útil do tema. Se alterar o identificador após os utilizadores terem configurado os seus blocos, o WordPress não conseguirá associar os dados guardados à nova chave, fazendo com que o conteúdo desapareça visualmente da frente do site.

#Criação de módulos legados com a classe WP_Widget

Antes da normalização dos blocos, os módulos personalizados eram criados estendendo a classe abstrata WP_Widget. Embora a recomendação atual seja construir blocos nativos com React, muitas bases de código antigas ainda utilizam esta estrutura:

<?php
declare(strict_types=1);

class Wppoland_Caixa_Contacto_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'wppoland_caixa_contacto',
            __('Caixa de Contacto WPPoland', 'wppoland'),
            ['description' => __('Apresenta um resumo de contacto direto na barra lateral.', 'wppoland')]
        );
    }

    public function widget($args, $instance): void {
        echo $args['before_widget'];
        $titulo = !empty($instance['titulo']) ? $instance['titulo'] : __('Fale Connosco', 'wppoland');
        echo $args['before_title'] . esc_html($titulo) . $args['after_title'];
        echo '<p class="contacto-texto">' . esc_html($instance['texto'] ?? '') . '</p>';
        echo $args['after_widget'];
    }

    public function form($instance): void {
        $titulo = $instance['titulo'] ?? '';
        $texto  = $instance['texto'] ?? '';
        ?>
        <p>
            <label for="<?php echo esc_attr($this->get_field_id('titulo')); ?>">
                <?php esc_html_e('Título:', 'wppoland'); ?>
            </label>
            <input class="widefat"
                   id="<?php echo esc_attr($this->get_field_id('titulo')); ?>"
                   name="<?php echo esc_attr($this->get_field_name('titulo')); ?>"
                   type="text"
                   value="<?php echo esc_attr($titulo); ?>">
        </p>
        <p>
            <label for="<?php echo esc_attr($this->get_field_id('texto')); ?>">
                <?php esc_html_e('Texto descritivo:', 'wppoland'); ?>
            </label>
            <textarea class="widefat"
                      id="<?php echo esc_attr($this->get_field_id('texto')); ?>"
                      name="<?php echo esc_attr($this->get_field_name('texto')); ?>"
                      rows="4"><?php echo esc_textarea($texto); ?></textarea>
        </p>
        <?php
    }

    public function update($new_instance, $old_instance): array {
        return [
            'titulo' => sanitize_text_field($new_instance['titulo'] ?? ''),
            'texto'  => sanitize_textarea_field($new_instance['texto'] ?? ''),
        ];
    }
}

add_action('widgets_init', static function (): void {
    register_widget('Wppoland_Caixa_Contacto_Widget');
});

Nas versões recentes do WordPress, este módulo clássico é encapsulado pelo bloco especial Widget Clássico (Legacy Widget), permitindo aos editores gerir os campos legados diretamente dentro da interface de blocos.

#Como restaurar a interface clássica de widgets

Em instalações empresariais de grande porte, o editor de blocos nas áreas de widgets pode apresentar lentidão ou entrar em conflito com plugins herdados que injetam scripts específicos. Existem duas formas recomendadas para regressar à experiência tradicional:

#Método 1: O plugin oficial Classic Widgets

Mantido diretamente pelos colaboradores do núcleo do WordPress, o plugin Classic Widgets é uma solução prática de um só clique. Ao ativá-lo, o painel Aparência > Widgets reverte de imediato para a disposição em colunas com arrastar e soltar. O restante editor de blocos para páginas e artigos continua intacto.

#Método 2: Desativação via filtro PHP

Se a sua equipa prefere manter a infraestrutura enxuta e evitar plugins adicionais, pode desativar o editor de blocos de widgets adicionando o seguinte filtro ao ficheiro functions.php ou a um plugin essencial (Must-Use Plugin):

<?php
// Desativa o editor de blocos exclusivamente no ecrã de widgets
add_filter('use_widgets_block_editor', '__return_false');

Este código afeta apenas a gestão de widgets, mantendo o editor Gutenberg plenamente funcional nas páginas e artigos.

#Abordagem 2: Full Site Editing (FSE) e temas de blocos

Nos temas de blocos modernos assentes na convenção FSE, o menu Aparência > Widgets não existe. O antigo Personalizador (Customizer) também se encontra desativado por omissão.

No ecossistema FSE, deixa de haver uma barreira técnica rígida entre o conteúdo da página e os elementos estruturais envolventes. Todas as zonas são compostas por blocos organizados em modelos (Templates) e partes de modelo (Template Parts).

#Como estruturar barras laterais e rodapés no Site Editor

  1. Aceda a Aparência > Editor no menu lateral.
  2. Selecione Partes de modelo (Template Parts) para aceder aos componentes estruturais do tema.
  3. Para configurar o rodapé, clique na parte de modelo correspondente (Footer). Aqui pode ajustar diretamente a disposição das colunas, inserir formulários de newsletter ou alterar avisos de direitos de autor.
  4. Para criar uma barra lateral nos artigos, abra o modelo de artigo individual (Single).
  5. Insira um bloco de Colunas (Columns), definindo, por exemplo, uma distribuição de 70% para o texto principal e 30% para a barra auxiliar.
  6. Na coluna menor, insira uma parte de modelo dedicada à barra lateral ou adicione diretamente os blocos pretendidos:
<!-- Exemplo de estrutura de barra lateral num modelo HTML de FSE -->
<!-- wp:columns {"align":"wide"} -->
<div class="wp-block-columns alignwide">
    <!-- wp:column {"width":"70%"} -->
    <div class="wp-block-column" style="flex-basis:70%">
        <!-- wp:post-content /-->
    </div>
    <!-- /wp:column -->

    <!-- wp:column {"width":"30%"} -->
    <div class="wp-block-column" style="flex-basis:30%">
        <!-- wp:template-part {"slug":"barra-lateral","theme":"meu-tema"} /-->
    </div>
    <!-- /wp:column -->
</div>
<!-- /wp:columns -->

Ao encapsular os elementos da barra lateral dentro de uma parte de modelo (template-part {"slug":"barra-lateral"}), garante que qualquer alteração aplicada num artigo seja refletida automaticamente em todo o catálogo de publicações do site.

#Comparação detalhada entre abordagens

A escolha entre os três métodos depende da arquitetura global do projeto e da literacia digital da equipa de gestão de conteúdos:

CaracterísticaWidgets Clássicos (Pré-5.8)Widgets em Blocos (5.8+)Full Site Editing (FSE)
Indicado paraTemas clássicos legadosTemas clássicos e híbridosTemas de blocos modernos
Localização no painelAparência > WidgetsAparência > WidgetsAparência > Editor
Flexibilidade de designLimitada a campos fixosElevada (biblioteca de blocos)Total (controlo visual de templates)
Impacto no carregamentoExtremamente leveRequer estilos CSS adicionaisOtimizado via theme.json
Futuro a longo prazoManutenção de compatibilidadeFase de transiçãoPadrão definitivo do WordPress

#Boas práticas de segurança e performance

Independentemente da metodologia selecionada, a configuração de módulos laterais e rodapés exige rigor técnico:

  • Controlo de pedidos de base de dados: Widgets que executam consultas pesadas (como listas de artigos mais vistos ou cálculos complexos de etiquetas) devem recorrer a transients ou a um sistema de cache de objetos em memória (Redis).
  • Sanitização rigorosa: Módulos personalizados que guardam entradas de utilizadores devem aplicar sempre funções como sanitize_text_field() e proteger as saídas com esc_html(), esc_url() ou esc_attr().
  • Prevenção de carregamento excessivo de scripts: Evite carregar bibliotecas externas pesadas (como feeds de redes sociais ou mapas interativos) de forma global caso o bloco esteja visível apenas num subconjunto reduzido de páginas.

#Cuidados na migração de interfaces clássicas para blocos

A passagem da arquitetura antiga para blocos pode suscitar desafios operacionais em sites em produção:

  1. Testes prévios em ambiente de staging: Antes de habilitar o editor de blocos nas áreas de widgets em produção, valide se os módulos legados continuam a renderizar sem anomalias de formatação.
  2. Ambiguidades em temas híbridos: Alguns temas modernos mantêm barras laterais clássicas ao mesmo tempo que suportam certas funcionalidades de FSE. Defina claramente onde a equipa deve editar cada componente para evitar duplicação de esforço.
  3. Dependência de seletores CSS antigos: Se o tema recorria a classes personalizadas como .widget_recent_entries, certifique-se de que os novos blocos incluem classes equivalentes para manter a identidade gráfica inalterada.

A modernização da estrutura do seu website permite acelerar fluxos editoriais e melhorar a pontuação em Core Web Vitals. Caso a sua empresa precise de apoio especializado para atualizar temas legados ou estruturar um projeto de raiz com Full Site Editing, a nossa equipa está disponível para planear a sua estratégia através dos nossos serviços de desenvolvimento em WordPress.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Quer implementar isto no seu site?

Se quer transformar o artigo em melhorias concretas, redesign ou num plano de implementação, posso fechar o escopo e executar.

Cluster relacionado

Explorar outros serviços WordPress e base de conhecimento

Reforce o seu negócio com suporte técnico profissional em áreas-chave do ecossistema WordPress.

FAQ do artigo

Perguntas frequentes

Respostas práticas para aplicar o tema na execução real.

SEO-readyGEO-readyAEO-ready3 Q&A
Porque não vejo o menu Widgets no meu painel WordPress?#
Se o submenu Widgets não aparecer em Aparência, o seu site tem ativo um tema de blocos (Block Theme) moderno. Nestes temas, todas as barras laterais e rodapés são configurados no Editor de Site através de Aparência > Editor e partes de modelo (Template Parts).
É possível utilizar widgets clássicos num tema de blocos moderno?#
Sim. O WordPress disponibiliza o bloco especial Widget Clássico (Legacy Widget), que permite selecionar módulos antigos criados através da classe WP_Widget a partir de uma lista suspensa. No entanto, para manter a consistência e a performance, recomenda-se a conversão para blocos nativos.
Como desativar a interface de blocos no ecrã de widgets?#
Pode ativar o plugin oficial Classic Widgets ou adicionar o filtro use_widgets_block_editor com retorno falso no ficheiro functions.php ou num plugin MU. Isto devolve o ecrã clássico de arrastar e soltar apenas para as áreas de widgets.

Precisa de FAQ adaptado ao setor e mercado? Criamos uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Artigos Relacionados

O roteiro do WordPress 7.1

O roteiro do WordPress 7.1 de Anne McCarthy girava em torno da colaboração, mas a colaboração em tempo real voltou a ficar de fora. O WordPress 7.1 Mary Lou saiu a 19 de agosto de 2026. O que realmente entrou, o que foi cortado, e o que o debate sobre o canary deployment continua a dizer sobre a forma como o WordPress é construído.

Colaboração em tempo real WordPress

A colaboração em tempo real foi retirada do WordPress 7.0 duas semanas antes do lançamento. A tentativa no 7.1 também ficou de fora. O WordPress 7.1 Mary Lou saiu a 19 de agosto de 2026 sem edição multiutilizador em direto. O problema da base de dados, a estratégia de testes e o que as agências devem fazer agora.