Fundo escuro com bloco de código flutuante, logo do WordPress, selo ACF e ícone de multisite, destacando o título 'WordPress".

Sumário

Criando shortcodes personalizados no WordPress: do básico ao avançado.

🔧 Criando um shortcode básico no WordPress

Um shortcode no WordPress nada mais é do que uma função PHP registrada com add_shortcode(), que pode ser usada dentro de páginas, posts ou até widgets. Vamos criar um exemplo simples que exibe uma mensagem:

				
					// No functions.php ou em um plugin
function infotechjs_mensagem_simples() {
    return '<p>Olá, este é meu primeiro shortcode!</p>';
}
add_shortcode('mensagem_simples', 'infotechjs_mensagem_simples');
				
			

Agora, basta usar [mensagem_simples] no conteúdo de uma página e pronto!

🧩 Shortcode com conteúdo dinâmico via ACF

Vamos dar um passo além. Imagine que você tem um campo personalizado chamado mensagem_boas_vindas criado com o ACF.

				
					function infotechjs_mensagem_dinamica() {
    $mensagem = get_field('mensagem_boas_vindas', 'option'); // ou outro post ID
    if ( $mensagem ) {
        return '<p>' . esc_html($mensagem) . '</p>';
    }
    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 que acessa conteúdo de outro site 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 .= '<div class="banner-global">';
        $output .= '<img decoding="async" src="' . esc_url($banner['url']) . '" alt="' . esc_attr($banner['alt']) . '">';
        $output .= '</div>';
    }

    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.

💡 assuntos relacionados:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *