Skip to content

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

🔗 Publicações relacionadas no Elementor através de um filtro de consulta personalizado

🔗 Publicações relacionadas no Elementor através de um filtro de consulta personalizado

O widget padrão de Publicações no Elementor Pro faz três coisas: publicações recentes, por categoria e uma lista manual. Mas quando precisa de um bloco de «Publicações Relacionadas» por baixo de um artigo, que corresponda à publicação atual por etiquetas e categorias, não existe uma opção integrada. Sim, o menu suspenso Origem tem um item «Relacionado» desde a versão 2.5, mas a lógica é primitiva: publicações das mesmas categorias, sem considerar o peso da correspondência. O resultado é previsível: o bloco parece uma seleção aleatória, em vez de uma recomendação com significado.

O objetivo: manter o design do cartão do Elementor, mas entregar a consulta a um plugin de terceiros que calcula a relevância em todas as taxonomias associadas de uma só vez. O resultado é um bloco de «Publicações Relacionadas» onde cada publicação seguinte está genuinamente mais próxima do que o leitor está a ver neste momento, em vez de apenas preencher a grelha.

O método funciona com PHP puro, sem extras adicionais e sem edição de templates. O Elementor renderiza o cartão, o plugin Related Posts By Taxonomy calcula os IDs e o hook elementor/query/{$query_id} liga as duas coisas. Dez minutos de configuração e o bloco fica ativo.

💡 Visão geral rápida:

  • Instale o plugin gratuito Related Posts By Taxonomy: encontra publicações relacionadas por categorias, etiquetas e taxonomias personalizadas partilhadas, sem sobrecarga no frontend.
  • No widget de Publicações do Elementor Pro, defina um Query ID único; esta string tornar-se-á o nome do hook para intercetar a WP_Query.
  • Adicione um snippet PHP ao seu site: a função obtém um array de IDs do plugin e passa-o à consulta do Elementor através de post__in.
  • Ajuste a contagem, a ordem, o template de saída e a cache através dos filtros do plugin, de acordo com as suas necessidades.

O plugin Related Posts By Taxonomy está no repositório oficial do WordPress.org desde 2014. Em junho de 2026, versão 2.7.9, testado até ao WordPress 7.0, mais de 10 000 instalações ativas. O autor, Kees Meijer, mantém o plugin de forma consistente: a versão mais recente saiu dias antes desta publicação.

O principal argumento de venda é uma pegada mínima. Sem painel de administração no dashboard, sem scripts extra no frontend, sem escritas na base de dados. Toda a configuração é feita através de filtros e atributos de shortcode. Para um programador, isto é uma vantagem: uma instalação limpa, comportamento previsível, zero peso desnecessário.

O algoritmo classifica as publicações pelo número de termos de taxonomia partilhados. Uma publicação que acumule mais correspondências em categorias e etiquetas com o artigo atual recebe a prioridade mais alta. O plugin não funciona apenas com categorias e etiquetas padrão; deteta taxonomias personalizadas registadas através do WooCommerce, ACF ou CPT UI. E como suporta tipos de publicação personalizados, o bloco de «Publicações Relacionadas» pode aparecer também em páginas de portefólio e em secções personalizadas.

Configurar o widget de Publicações no Elementor

Adicione o widget Publicações da biblioteca do Elementor Pro à sua página de Template de Publicação Única. Configure o skin (Cartões ou Clássico) e obtenha o design que deseja: imagem destacada, título, data, excerto. Nesta fase, o widget mostra as publicações mais recentes do blogue, e isso é esperado.

Agora, o passo fundamental. Na barra lateral de edição, abra o separador Consulta. Encontre o campo Query ID e introduza um identificador único, por exemplo related_posts_by_tax. Esta string exata tornar-se-á o nome do hook elementor/query/related_posts_by_tax, que usaremos para intercetar a consulta.

Campo ID de consulta nas definições do widget de publicações do Elementor Pro

O parâmetro Query ID está disponível no Elementor Pro desde a versão 2.0. Foi concebido especificamente para programadores: define um identificador de string e depois anexa a sua função de callback ao hook elementor/query/{your_id}. A documentação detalhada está no portal do programador do Elementor.

Deixe as restantes definições de Consulta (Tipo de Publicação, Taxonomias, Ordenar Por) como estão. Elas continuam a aplicar-se e o nosso filtro é adicionado por cima. Por exemplo, se o Tipo de Publicação do widget estiver definido como «Publicações», o plugin Related Posts By Taxonomy procurará entradas relacionadas apenas entre publicações do blogue.

Snippet PHP: ligar os dois plugins

O código consiste numa única chamada add_action e uma função curta. Chama o método km_rpbt_get_related_posts() do plugin, obtém um array de IDs de publicações relevantes e passa-o à WP_Query através do parâmetro post__in.

Adicione o snippet ao functions.php do seu tema filho ou através do plugin Code Snippets:

1/**
2 * Replaces the Elementor Posts widget query with related posts.
3 * Uses the Related Posts By Taxonomy plugin.
4 *
5 * @param \WP_Query $query The Elementor query object.
6 */
7add_action( 'elementor/query/related_posts_by_tax', 'sdstudio_related_posts' );
8function sdstudio_related_posts( $query ) {
9 global $post;
10
11 $related_ids = km_rpbt_get_related_posts(
12 $post->ID,
13 array( 'fields' => 'ids' )
14 );
15
16 if ( ! empty( $related_ids ) ) {
17 $query->set( 'post__in', $related_ids );
18 $query->set( 'orderby', 'post__in' );
19 }
20}

Explicação linha a linha:

  • elementor/query/related_posts_by_tax é o hook cujo nome corresponde ao Query ID no widget. Se usou um ID diferente, substitua a string.
  • global $post dá acesso à publicação atual, que serve como ponto de partida.
  • km_rpbt_get_related_posts() é a função do plugin que devolve um array de IDs de publicações relacionadas. O parâmetro 'fields' => 'ids' acelera a consulta: o plugin não vai buscar objetos completos.
  • $query->set( 'post__in', $related_ids ) limita estritamente a WP_Query apenas às publicações encontradas.
  • $query->set( 'orderby', 'post__in' ) preserva a ordem devolvida pelo plugin, da mais relevante para a menos.

Tecnicamente, são executadas duas consultas: primeiro o plugin encontra os IDs, depois o Elementor vai buscar os objetos completos por esses IDs. Na prática, com 3 a 5 publicações relacionadas, a sobrecarga é insignificante. Para o máximo desempenho, ative a opção de cache persistente do plugin; esta guarda os resultados em cache durante um período especificado.

Afinar o resultado

O snippet acima é a versão básica. A partir daqui, a consulta pode ser personalizada para as suas necessidades específicas.

Limitar a contagem. Por predefinição, o plugin devolve até 5 publicações. Para alterar o limite, passe o parâmetro posts_per_page:

1$related_ids = km_rpbt_get_related_posts(
2 $post->ID,
3 array(
4 'fields' => 'ids',
5 'posts_per_page' => 3,
6 )
7);

Excluir a publicação atual. O plugin faz isto automaticamente, mas se quiser uma salvaguarda extra, adicione $query->set( 'post__not_in', array( $post->ID ) ).

Limitar por data. Mostrar apenas publicações dos últimos 12 meses:

1$related_ids = km_rpbt_get_related_posts(
2 $post->ID,
3 array(
4 'fields' => 'ids',
5 'limit_month' => 12,
6 )
7);

Alterar o template de saída. O plugin suporta templates HTML personalizados através do filtro rpbt_template. Coloque um ficheiro related-posts-by-taxonomy.php na pasta do seu tema e o markup é totalmente seu. A documentação com exemplos está no site do autor; para um plugin gratuito, é impressionantemente detalhada.

Modo Ajax. Se o bloco de publicações relacionadas ficar muito abaixo do dobramento da página, ative o carregamento lazy através do filtro rpbt_ajax_load; o plugin irá buscar as publicações de forma assíncrona, sem afetar o First Contentful Paint.

Este vídeo da equipa do Elementor demonstra a gestão avançada de consultas em ação, incluindo a seleção de publicações relacionadas e a filtragem por data:

⁉️🤔 Perguntas frequentes

É necessário o Elementor Pro para este método?

Sim, o filtro de consulta personalizado elementor/query/{$query_id} está disponível apenas no Elementor Pro. A versão gratuita não tem um widget de Publicações com um campo Query ID.

E se o plugin não encontrar publicações relacionadas?

Certifique-se de que as suas publicações partilham taxonomias comuns. O plugin procura correspondências em todas as taxonomias públicas associadas ao tipo de publicação. Se as publicações estiverem distribuídas por categorias não sobrepostas, não haverá publicações relacionadas. Configure um fallback: por exemplo, mostre as publicações mais recentes da mesma categoria.

Esta abordagem pode ser usada com tipos de publicação personalizados?

Sim. Especifique o Tipo de Publicação desejado nas definições de Consulta do widget do Elementor e o plugin Related Posts By Taxonomy irá detetar automaticamente as taxonomias registadas para esse tipo. O método funciona com portefólios, produtos WooCommerce e qualquer CPT.

O método funciona com um tema de blocos (Full Site Editing)?

O widget de Publicações do Elementor Pro não depende do tema; funciona tanto em temas clássicos como de blocos. O requisito principal é que o template de Publicação Única seja gerido através do Theme Builder do Elementor.

Em que é que este método é melhor do que a opção «Relacionado» integrada no Elementor?

A opção integrada simplesmente filtra publicações pelas mesmas categorias, sem considerar a contagem de correspondências e sem suporte para taxonomias personalizadas. O Related Posts By Taxonomy classifica as publicações em todas as taxonomias associadas simultaneamente e devolve as mais relevantes, não apenas as «da mesma categoria».

Vale a pena o esforço do filtro manual

Em blogues pequenos com um punhado de categorias, a opção «Relacionado» integrada no Elementor Pro é mais do que suficiente. Mas assim que surgem taxonomias personalizadas, vários tipos de publicação ou a necessidade de controlar com precisão a lógica de correspondência, um filtro manual via elementor/query/{$query_id} torna-se a única solução limpa, sem comprar add-ons adicionais.

O plugin Related Posts By Taxonomy resolve o problema com custo zero e não adiciona código extra ao frontend. A configuração demora 10 minutos e o resultado é um bloco de «Publicações Relacionadas» relevante, que mantém os visitantes no seu site durante mais tempo do que uma seleção aleatória de publicações recentes.

Experimente num ambiente de teste: crie um WordPress local, instale o plugin e o Elementor Pro, adicione o snippet e verifique se o método funciona exatamente como precisa.