SearchWP Documentation

Visualizza la guida all'installazione, sfoglia la Knowledge Base, scopri i numerosi hook di SearchWP

Come visualizzare l'etichetta del tipo di post nei risultati di ricerca

Quando si utilizza la ricerca predefinita di WordPress, i risultati vengono visualizzati tramite il file del modello di ricerca integrato nel tema (solitamente denominato search.php). La maggior parte dei temi WordPress non include informazioni sul tipo di post nelle visualizzazioni dei risultati di ricerca per impostazione predefinita, mostrando solo il titolo del post, l'estratto e altri elementi standard. Se si desidera mostrare l'etichetta del tipo di post (ad esempio, "Post", "Pagina", "Prodotto", ecc.) accanto a ciascun risultato di ricerca, sarà necessario apportare una piccola personalizzazione modificando il file del modello di ricerca del tema o utilizzando gli hook di WordPress.

Il primo approccio consiste nel modificare manualmente il file del modello di ricerca del tema. All'interno del ciclo di ricerca principale, è possibile utilizzare la funzione get_post_type_object() per recuperare e visualizzare l'etichetta del tipo di post per ciascun risultato. Questo ti dà il controllo completo su dove e come le informazioni sul tipo di post appaiono all'interno del layout dei risultati di ricerca. In alternativa, è possibile utilizzare un hook di filtro di WordPress per anteporre automaticamente l'etichetta del tipo di post prima del titolo di ciascun risultato di ricerca. Questo approccio è più semplice e non richiede la modifica dei file del tema. È possibile aggiungere il seguente snippet preparando un Plugin di personalizzazione SearchWP o utilizzando un gestore di snippet di codice come 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 );

Questo codice garantisce che ogni volta che un utente esegue una ricerca, il nome del tipo di post (come "Pagina" o "Prodotto") venga visualizzato prima del titolo di ciascun risultato nell'elenco dei risultati di ricerca. Utilizza il filtro the_title() di WordPress e verifica se il ciclo corrente fa parte di una query di ricerca prima di applicare la modifica.

Se stai utilizzando i risultati del modello personalizzati di SearchWP o la ricerca dal vivo, l'hook sopra non verrà applicato automaticamente perché quei risultati vengono generati in modo diverso. Invece, puoi utilizzare gli hook di filtro di SearchWP per modificare l'output di ciascuna voce di risultato. Il seguente esempio mostra come anteporre l'etichetta del tipo di post prima del titolo sia per il modello SearchWP che per i risultati della ricerca dal vivo:

Ecco un esempio che utilizza un'immagine di 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 );

Con questa personalizzazione in atto, SearchWP visualizzerà automaticamente il nome del tipo di post prima del titolo sia nei risultati del modello di ricerca personalizzato che nel menu a discesa della ricerca dal vivo. Questo metodo fornisce un modo flessibile e adatto al codice per fornire agli utenti un contesto aggiuntivo sul tipo di contenuto che stanno visualizzando nei risultati di ricerca senza modificare direttamente i file del tema.

Crea Oggi Stesso una Migliore Esperienza di Ricerca WordPress

Non perdere mai più visitatori a causa di risultati di ricerca inutili. SearchWP rende la creazione della tua ricerca intelligente WordPress veloce e facile.

Get SearchWP Now
Icona di motori di ricerca multipli