Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🔧 WordPress: como mostrar um widget com um shortcode em qualquer lugar do seu site

🔧 WordPress: como mostrar um widget com um shortcode em qualquer lugar do seu site

Precisa de um formulário de subscrição não na barra lateral, mas mesmo no meio de um artigo. Ou de um widget de catálogo do WooCommerce numa página que não tem barra lateral nenhuma. Vai ao painel de administração, procura um bloco e o WordPress diz: os widgets vivem apenas em áreas de tema registadas. Ponto final.

A limitação é arquitetural: o sistema de widgets está vinculado a sidebar-1, footer-widgets e outras zonas definidas no tema. O conteúdo dos artigos é território estrangeiro para ele. Pode contornar isto, mas não existe uma opção padrão «inserir widget aqui» no núcleo.

Um shortcode para widgets resolve o problema com uma única linha. Sem necessidade de criar uma área separada, sem tema filho, sem edição de templates. Veja a seguir como funciona em 2026: um plugin pronto a usar, todos os parâmetros e uma alternativa nativa em PHP para developers.

💡 Visão geral rápida:

  • Instale o WP Anywhere Widgets, o plugin gera um shortcode para qualquer widget registado.
  • Insira o shortcode num artigo, página, barra lateral ou template PHP do tema.
  • Configure o título, o elemento HTML de invólucro e as classes CSS através dos parâmetros do shortcode.
  • Para projetos sem plugins de terceiros, utilize a função nativa the_widget().

Por que precisa de um shortcode para widgets

O WordPress não permite exibir um widget dentro do conteúdo de um artigo usando as ferramentas padrão. O sistema de widgets funciona apenas dentro de áreas de tema registadas e tudo o que está fora desses limites não existe para ele.

Na prática, a necessidade surge em três cenários:

  • Formulário de subscrição num guia longo. A barra lateral já desapareceu com o scroll, o leitor não vê o formulário. Um shortcode mantém a chamada para ação (CTA) mesmo no corpo do artigo, diante dos olhos.

  • Widget do WooCommerce numa página personalizada. A página foi construída sem barra lateral, mas os filtros de produtos ou a pesquisa ([woocommerce_product_search]) precisam de estar ali mesmo.

  • Bloco dinâmico de «Artigos Relacionados» no template single.php. O tema não disponibilizou uma área antes dos comentários. Um shortcode chamado a partir do functions.php coloca o widget em qualquer lugar sem mexer nos templates.

Anteriormente, o plugin Widget Shortcode tratava desta tarefa: uma ferramenta simples que gerava [widget id="text-1"] para qualquer widget registado. Em janeiro de 2023, foi encerrado devido a uma vulnerabilidade não resolvida. O sucessor direto é o WP Anywhere Widgets.

WP Anywhere Widgets: gerador de shortcodes para qualquer widget

O WP Anywhere Widgets adotou a mesma ideia, mas foi mais longe. Não só fornece shortcodes para widgets existentes, como também permite criar os seus próprios diretamente no painel de administração, sem os vincular a uma barra lateral. Suporta tanto o editor clássico de widgets como os blocos Gutenberg.

Página de shortcodes para todos os widgets do WP Anywhere Widgets

A instalação é a padrão: Plugins → Adicionar Novo → pesquisar «WP Anywhere Widgets» → Instalar → Ativar. Após a ativação, aparece um item Widget Shortcodes no menu Aparência: uma tabela de resumo de todos os widgets criados e os respetivos shortcodes. Um botão «Copiar» ao lado de cada um.

O plugin funciona com o WordPress 3.3 e superior, testado até à versão 6.8.5. Em junho de 2026, conta com mais de 700 instalações ativas e uma classificação de 4,8 em 5 no WordPress.org. A atualização mais recente (v4.0) adicionou suporte total a blocos Gutenberg e uma página de administração separada para gerir shortcodes.

🔗 WP Anywhere Widgets no WordPress.org

Como gerar um shortcode de widget

Qualquer widget registado no sistema recebe um ID único: text-1, calendar-3 ou block-7. O WP Anywhere Widgets mostra este ID na interface e fornece de imediato um shortcode pronto:

Geração de shortcodes de widgets no admin do WordPress

Sintaxe básica:

1[widget id="text-1"]

Insira-o em qualquer artigo, página ou bloco de texto. O plugin substituirá pelo HTML completo do widget: título, corpo, invólucro com as classes CSS do tema. Não é necessária configuração adicional.

Inserir um shortcode num artigo e no editor Gutenberg

No editor clássico, o shortcode é inserido diretamente no texto, tal como [gallery] ou [contact-form-7]:

Inserir um shortcode de widget no corpo de um artigo do WordPress

No editor de blocos, utilize o bloco Shortcode. Adicione o bloco, cole [widget id="text-1"] e o WordPress renderiza o widget no editor visual:

Shortcode de widget no editor de blocos Gutenberg

Se o widget contiver JavaScript (por exemplo, um mapa ou formulário), este não será executado no editor. É uma limitação de segurança do Gutenberg. No frontend, tudo funciona normalmente.

Parâmetros do shortcode: título, invólucro e classes CSS

O shortcode aceita vários parâmetros opcionais que alteram a saída HTML sem uma única linha de código:

Interface de configuração de parâmetros do shortcode do widget

title, substituição do título. Por predefinição, o widget mostra o título definido nas suas configurações. O parâmetro title substitui-o dinamicamente:

1[widget id="text-1" title="New title"]

Para ocultar completamente o título, passe title="0". O widget será renderizado sem um <h2> ou <h3> acima do corpo.

container_tag, tag HTML do invólucro. Por predefinição, o widget é envolvido numa <div>. Substitua-a por <section>, <aside> ou qualquer outra tag semântica:

1[widget id="text-1" container_tag="aside"]

container_class, classe CSS adicional. A sua classe é adicionada à classe padrão widget. Útil para estilização personalizada de uma instância específica:

1[widget id="text-1" container_class="my-custom-widget"]

container_id, atributo HTML id. Por predefinição, o WordPress gera o ID automaticamente. Este parâmetro fixa o valor para links âncora e targeting de JavaScript:

1[widget id="text-1" container_id="subscribe-widget"]

title_tag** e title_class, controlo do título.** Altere a tag do título de <h2> (predefinição) para <h3>, <h4> e adicione uma classe personalizada:

1[widget id="text-1" title_tag="h3" title_class="widget-title-large"]

Todos os parâmetros podem ser combinados num único shortcode. A ordem não importa, a sintaxe é a padrão: param="value".

Método PHP: a função the_widget() para developers

Quando não precisa de um plugin, o WordPress disponibiliza a função nativa the_widget(). Esta produz qualquer widget registado diretamente a partir de PHP: num tema, tema filho ou snippet do Code Snippets.

Chamada básica:

1the_widget( 'WP_Widget_Text', array(
2 'title' => 'Subscription form',
3 'text' => '[mailpoet_form id="1"]',
4 'filter' => true,
5) );

O primeiro argumento é a classe PHP do widget. O segundo é um array de configurações que corresponde ao que o widget guarda em wp_options. O terceiro é um array de argumentos do invólucro:

1the_widget( 'WP_Widget_Text',
2 array( 'title' => 'Subscribe', 'text' => '[shortcode]' ),
3 array(
4 'before_widget' => '<section class="widget %2$s">',
5 'after_widget' => '</section>',
6 'before_title' => '<h3 class="widget-title">',
7 'after_title' => '</h3>',
8 )
9);

Esta abordagem não depende de plugins de terceiros e não se quebrará com atualizações do WordPress. A desvantagem: precisa de saber a classe PHP de cada widget. Classes padrão do núcleo:

  • WP_Widget_Text
  • WP_Widget_Calendar
  • WP_Widget_Search
  • WP_Widget_Categories

Encontre a classe de um plugin no seu código fonte ou através de var_dump( $wp_widget_factory->widgets ).

O código vai para o functions.php do tema ativo (de preferência um tema filho) ou através do plugin Code Snippets. Antes de editar o functions.php, faça uma cópia de segurança do ficheiro: um erro de sintaxe PHP fará cair o site inteiro.

⁉️🤔 Perguntas frequentes

O shortcode de widget funciona com plugins de caching?

Sim, o shortcode é processado pelo servidor durante a renderização da página, antes de o HTML entrar na cache. O WP Rocket, W3 Total Cache e LiteSpeed Cache guardam a página já montada com o widget finalizado. Para dados dinâmicos (carrinho WooCommerce, taxas de câmbio), utilize blocos ESI para excluir um fragmento específico da cache. A função the_widget() combinada com DOING_AJAX dá-lhe controlo total sobre o que é cacheado e o que não é.

O widget precisa de estar numa barra lateral ativa?

Não, o widget não precisa de estar numa barra lateral ativa. Só precisa de estar registado no WordPress e adicionado a qualquer barra lateral, incluindo uma inativa (Widgets Inativos). O WP Anywhere Widgets cria widgets no seu próprio registo interno, que não está de todo vinculado às áreas do tema.

Quantos widgets pode exibir via shortcode numa única página?

Não há limites de quantidade. Cada chamada [widget] ou the_widget() cria uma instância independente. O desempenho depende apenas da complexidade dos próprios widgets: dez blocos de texto ou formulários de subscrição serão executados instantaneamente, enquanto dez widgets com pedidos a APIs externas adicionarão 200-300 ms cada um. Para widgets com muitas APIs, faça cache dos resultados via transient dentro de the_widget().

O que acontece se o plugin do widget for removido, mas o seu shortcode permanecer nos artigos?

Um shortcode sem um handler ativo é exibido como texto simples: os visitantes verão [widget id="text-1"] mesmo na página. Antes de remover o plugin de origem, verifique todos os artigos através da pesquisa do administrador: Ferramentas → Better Search Replace, ou WP-CLI: wp search-replace '[widget id="text-1"]' '' --dry-run. Após a substituição em massa, limpe os parágrafos vazios na base de dados separadamente.

Pode usar um shortcode de widget num menu de navegação?

Os menus do WordPress não processam shortcodes por predefinição. Para inserir um widget na navegação, utilize o filtro wp_nav_menu_items no functions.php com uma chamada do_shortcode('[widget id="..."]'): isto adiciona o shortcode antes, depois ou entre itens de menu específicos. Alternativa: uma classe Walker personalizada que analisa um placeholder {widget} no nome do item de menu e o substitui por um widget ao vivo.

O que escolher: plugin ou código personalizado

Na maioria dos casos, o WP Anywhere Widgets trata completamente da tarefa. Instale, copie o shortcode, cole onde for necessário. Os parâmetros são suficientes para a personalização do invólucro sem uma única linha de CSS.

O método PHP via the_widget() justifica-se em duas situações: é um developer que visa zero plugins de terceiros no projeto ou precisa de lógica especial (por exemplo, widgets diferentes para utilizadores autenticados versus visitantes). Caso contrário, use o plugin e não complique.

Se o seu objetivo for especificamente incorporar um formulário de subscrição no meio de um artigo, considere plugins de email com suporte nativo a shortcodes: MailPoet, Newsletter, Brevo. Cada um fornece um shortcode [form] pronto com controlo de posicionamento, enquanto o WP Anywhere Widgets serve como uma camada universal para todo o resto.

Uma demonstração visual do canal WebTutorials: o ciclo completo desde a instalação do plugin até um shortcode funcional numa página, rápido e direto ao ponto.