🧩 Shortcodes personalizados no WordPress Multisite
Os shortcodes são uma das formas mais práticas de criar recursos dinâmicos no WordPress. Além disso, se você trabalha com instalações Multisite, dá para usá-los para compartilhar conteúdo entre os sites da rede — banners, posts ou campos do ACF.
Neste texto mostro como criar um shortcode que busca conteúdo de outro site da rede com switch_to_blog() e, em seguida, como usar esse shortcode no Elementor sem plugin nenhum. Ou seja, o mesmo código serve para o editor de blocos e para o Elementor.
📦 Exemplo: banner global com ACF
function infotechjs_banner_global_shortcode() {
$output = '';
// ID do site principal onde os dados estão salvos
$blog_id_origem = 1;
// Página ou post onde o conteúdo está
$post_id = 7; // Substitua pelo ID real
// Troca temporariamente para o site principal
switch_to_blog($blog_id_origem);
// Obtém os campos ACF
$banner = get_field('banner_destacado', $post_id); // exemplo de campo
// Retorna ao site atual
restore_current_blog();
// Monta o HTML
if ( $banner ) {
$output .= '';
$output .= '
';
$output .= '';
}
return $output;
}
add_shortcode('banner_global', 'infotechjs_banner_global_shortcode');
💡 Use [banner_global] em qualquer lugar do site — inclusive em outro site da rede.
De fato, é aí que o shortcode ganha valor: você mantém o banner num lugar só, no site principal, e todos os outros consomem a mesma fonte. Portanto, quando o banner muda, muda em todos de uma vez.
🎨 Como usar esse shortcode no Elementor
O Elementor tem um widget próprio para isso, e o caminho é curto:
- Edite a página com o Elementor;
- Arraste o widget Shortcode para onde quiser exibir o conteúdo;
- Digite no campo:
[banner_global]
Salve e visualize no front-end. Em seguida, confira se o conteúdo do outro site aparece — se vier vazio, o problema quase sempre é o ID do site ou do post no código, não o Elementor.
Vale notar uma diferença: o widget Shortcode não renderiza no editor visual, só no front. Por isso, não estranhe ver o código cru enquanto edita.
🧠 Dica de performance
Evite fazer isso em grande escala dentro de loops, pois cada switch_to_blog() tem um custo. No entanto, para volume maior de dados compartilhados há dois caminhos melhores:
- Guardar em cache com
set_transient()ouwp_cache_set(); - Ou criar uma REST API no site principal e consumir por lá.
Na prática, o cache resolve a maioria dos casos. Já a REST API compensa quando o dado precisa sair da rede — para um app ou um front headless, por exemplo.
✅ Conclusão
Em resumo, os shortcodes continuam sendo uma ferramenta direta no WordPress e, quando usados com responsabilidade, permitem integração mesmo em ambiente complexo como o Multisite. Portanto, comece pelo caso simples: um shortcode, um site de origem, cache ligado.
Em todo o caso, se o mesmo dado passar a ser consumido por vários sites e começar a pesar, o próximo passo é trocar o switch_to_blog() por uma REST API — e aí o custo deixa de crescer junto com a rede.
Respostas de 2