SearchWP Documentation

Consultez le guide d’installation, parcourez la base de connaissances, découvrez les nombreux hooks de SearchWP

Comment afficher l'étiquette du type de publication dans les résultats de recherche

Lorsque vous utilisez la recherche WordPress par défaut, les résultats sont affichés via le fichier de modèle de recherche intégré de votre thème (généralement nommé search.php). La plupart des thèmes WordPress n'incluent pas d'informations sur le type de publication dans leurs affichages de résultats de recherche par défaut, montrant uniquement le titre de la publication, l'extrait et d'autres éléments standard. Si vous souhaitez afficher l'étiquette du type de publication (par exemple, « Publication », « Page », « Produit », etc.) à côté de chaque résultat de recherche, vous devrez apporter une petite personnalisation en modifiant le fichier de modèle de recherche de votre thème ou en utilisant les hooks WordPress.

La première approche consiste à modifier manuellement le fichier de modèle de recherche de votre thème. Dans la boucle de recherche principale, vous pouvez utiliser la fonction get_post_type_object() pour récupérer et afficher l'étiquette du type de publication pour chaque résultat. Cela vous donne un contrôle total sur où et comment les informations sur le type de publication apparaissent dans la mise en page des résultats de recherche. Alternativement, vous pouvez utiliser un hook de filtre WordPress pour préfixer automatiquement l'étiquette du type de publication avant le titre de chaque résultat de recherche. Cette approche est plus simple et ne nécessite pas de modifier vos fichiers de thème. Vous pouvez ajouter le fragment de code suivant en préparant un plugin de personnalisations SearchWP ou en utilisant un gestionnaire d'extraits de code comme 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 );

Ce code garantit que chaque fois qu'un utilisateur effectue une recherche, le nom du type de publication (tel que « Page » ou « Produit ») est affiché avant le titre de chaque résultat dans la liste des résultats de recherche. Il utilise le filtre WordPress the_title() et vérifie si la boucle actuelle fait partie d'une requête de recherche avant d'appliquer la modification.

Si vous utilisez les résultats de modèle personnalisés de SearchWP ou la recherche en direct, le hook ci-dessus ne s'appliquera pas automatiquement car ces résultats sont générés différemment. Au lieu de cela, vous pouvez utiliser les propres hooks de filtre de SearchWP pour modifier la sortie de chaque entrée de résultat. L'exemple suivant montre comment préfixer l'étiquette du type de publication avant le titre pour les résultats du modèle SearchWP et les résultats de recherche en direct :

Voici un exemple utilisant une image de secours :

<?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 );

Avec cette personnalisation en place, SearchWP affichera automatiquement le nom du type de publication avant le titre dans ses résultats de modèle de recherche personnalisés et dans la liste déroulante de recherche en direct. Cette méthode offre un moyen flexible et convivial pour le code de donner aux utilisateurs un contexte supplémentaire sur le type de contenu qu'ils consultent dans les résultats de recherche sans modifier directement les fichiers de votre thème.

Créez dès aujourd'hui une meilleure expérience de recherche WordPress

Ne perdez plus jamais de visiteurs à cause de résultats de recherche inutiles. SearchWP rend la création de votre propre recherche WordPress intelligente rapide et facile.

Get SearchWP Now
Icône de moteurs de recherche multiples