Como exibir o rótulo do Tipo de Postagem nos Resultados da Pesquisa
Ao usar a pesquisa padrão do WordPress, os resultados são exibidos através do arquivo de modelo de pesquisa integrado do seu tema (geralmente chamado search.php). A maioria dos temas do WordPress não inclui informações sobre o tipo de post em suas exibições de resultados de pesquisa por padrão, mostrando apenas o título do post, o resumo e outros elementos padrão. Se você deseja mostrar o rótulo do tipo de post (por exemplo, "Post", "Página", "Produto", etc.) ao lado de cada resultado da pesquisa, você precisará fazer uma pequena personalização editando o arquivo de modelo de pesquisa do seu tema ou usando os ganchos do WordPress.
A primeira abordagem é editar manualmente o arquivo de modelo de pesquisa do seu tema. Dentro do loop de pesquisa principal, você pode usar a função get_post_type_object() para recuperar e exibir o rótulo do tipo de post para cada resultado. Isso lhe dá controle total sobre onde e como as informações do tipo de post aparecem no layout do resultado da pesquisa. Alternativamente, você pode usar um gancho de filtro do WordPress para adicionar automaticamente o rótulo do tipo de post antes do título de cada resultado da pesquisa. Essa abordagem é mais fácil e não requer a modificação dos arquivos do seu tema. Você pode adicionar o seguinte trecho preparando um Plugin de Personalizações SearchWP ou usando um gerenciador de trechos de código como WPCode:
| <?php | |
| // Prepend post type label to title for native main search | |
| add_filter( 'the_title', function( $title, $post_id ) { | |
| if ( in_the_loop() && ( is_search() || isset( $_REQUEST['swps'] ) ) ) { | |
| $post_type_obj = get_post_type_object( get_post_type( $post_id ) ); | |
| if ( $post_type_obj && ! empty( $post_type_obj->labels->singular_name ) ) { | |
| $label = esc_html( $post_type_obj->labels->singular_name ); | |
| $title = sprintf( '<span class="search-post-type">%s:</span> %s', $label, $title ); | |
| } | |
| } | |
| return $title; | |
| }, 10, 2 ); |
Este código garante que sempre que um usuário realizar uma pesquisa, o nome do tipo de post (como "Página" ou "Produto") seja exibido antes do título de cada resultado na lista de resultados da pesquisa. Ele usa o filtro the_title() do WordPress e verifica se o loop atual faz parte de uma consulta de pesquisa antes de aplicar a modificação.
Se você estiver usando os resultados de modelo personalizados do SearchWP ou a Pesquisa ao Vivo, o gancho acima não se aplicará automaticamente porque esses resultados são gerados de forma diferente. Em vez disso, você pode usar os próprios ganchos de filtro do SearchWP para modificar a saída de cada entrada de resultado. O exemplo a seguir mostra como adicionar o rótulo do tipo de post antes do título para os resultados do modelo SearchWP e da Pesquisa ao Vivo:
Aqui está um exemplo usando uma imagem de fallback:
| <?php | |
| // Display post type label before title for SearchWP template and live search results | |
| function prepend_post_type_to_title( $data, $result ) { | |
| if ( $result instanceof \WP_Post ) { | |
| $post_type_obj = get_post_type_object( get_post_type( $result ) ); | |
| if ( $post_type_obj && ! empty( $post_type_obj->labels->singular_name ) ) { | |
| $label = esc_html( $post_type_obj->labels->singular_name ); | |
| $data['title'] = $label . ' - ' . $data['title']; | |
| } | |
| } | |
| return $data; | |
| } | |
| // Hook for SearchWP template | |
| add_filter( 'searchwp\results\entry\data', function( $data, $result ) { | |
| return prepend_post_type_to_title( $data, $result ); | |
| }, 20, 2 ); | |
| // Hook for SearchWP Live Search | |
| add_filter( 'searchwp_live_search_results_entry_data', function( $data, $result ) { | |
| return prepend_post_type_to_title( $data, $result ); | |
| }, 20, 2 ); |
Com essa personalização implementada, o SearchWP exibirá automaticamente o nome do tipo de post antes do título nos resultados do modelo de pesquisa personalizado e no dropdown de pesquisa ao vivo. Este método fornece uma maneira flexível e amigável ao código de dar aos usuários contexto adicional sobre o tipo de conteúdo que eles estão visualizando nos resultados da pesquisa sem modificar diretamente os arquivos do seu tema.

