🔧 Shortcode personalizado WordPress: o básico
Um cliente queria repetir o mesmo aviso em várias páginas sem colar HTML toda vez — a saída foi um shortcode personalizado WordPress: uma função PHP registrada com add_shortcode(), que roda dentro de páginas, posts ou widgets. Vamos montar três, do texto fixo ao que busca dado em outro site da rede.
// No functions.php ou em um plugin
function infotechjs_mensagem_simples() {
return 'Olá, este é meu primeiro shortcode!
';
}
add_shortcode('mensagem_simples', 'infotechjs_mensagem_simples');
Agora, basta usar [mensagem_simples] no conteúdo de uma página e pronto!
🧩 Shortcode personalizado WordPress com dado dinâmico (ACF)
Vamos dar um passo além. Imagine que você tem um campo personalizado chamado mensagem_boas_vindas criado com o ACF. É o mesmo princípio do shortcode anterior, mas em vez de texto fixo no código, ele lê um valor que você edita pelo painel — sem tocar em PHP depois de pronto.
function infotechjs_mensagem_dinamica() {
$mensagem = get_field('mensagem_boas_vindas', 'option'); // ou outro post ID
if ( $mensagem ) {
return '' . esc_html($mensagem) . '
';
}
return '';
}
add_shortcode('mensagem_dinamica', 'infotechjs_mensagem_dinamica');
Esse shortcode [mensagem_dinamica] vai puxar o conteúdo dinâmico do ACF, e já com esc_html() para manter a segurança.
Na próxima seção: 🔁 Vamos evoluir para buscar conteúdo de outro site na rede Multisite usando switch_to_blog().
🌐 Shortcode personalizado WordPress no Multisite
Imagine que você tem um campo personalizado no site principal (ID 1) com banners ou dados compartilhados. Podemos criar um shortcode para buscá-lo, mesmo que ele seja usado em outro site da rede.
💻 Exemplo prático:
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 o shortcode [banner_global] onde quiser exibir o conteúdo do site principal.
🧠 Dica de performance
Evite usar switch_to_blog() dentro de loops grandes. Se você tiver que exibir vários conteúdos de outros sites, prefira agrupar os dados em cache com transient ou APIs personalizadas.
Esses três casos cobrem a régua inteira de um shortcode personalizado WordPress: texto fixo, dado dinâmico do próprio site via ACF, e dado buscado em outro site da rede via switch_to_blog(). Comece pelo mais simples — na maioria dos projetos, o primeiro já resolve; o Multisite só entra quando o dado de verdade mora em outro site.