Cómo mostrar la etiqueta del tipo de publicación en los resultados de búsqueda
Al usar la búsqueda predeterminada de WordPress, los resultados se muestran a través del archivo de plantilla de búsqueda integrado de su tema (generalmente llamado search.php). La mayoría de los temas de WordPress no incluyen información del tipo de publicación en sus visualizaciones de resultados de búsqueda de forma predeterminada, mostrando solo el título de la publicación, el extracto y otros elementos estándar. Si desea mostrar la etiqueta del tipo de publicación (por ejemplo, "Publicación", "Página", "Producto", etc.) junto a cada resultado de búsqueda, deberá realizar una pequeña personalización editando el archivo de plantilla de búsqueda de su tema o utilizando los ganchos de WordPress.
El primer enfoque es editar manualmente el archivo de plantilla de búsqueda de su tema. Dentro del bucle de búsqueda principal, puede usar la función get_post_type_object() para recuperar y mostrar la etiqueta del tipo de publicación para cada resultado. Esto le da control total sobre dónde y cómo aparece la información del tipo de publicación dentro del diseño del resultado de búsqueda. Alternativamente, puede usar un gancho de filtro de WordPress para anteponer automáticamente la etiqueta del tipo de publicación antes del título de cada resultado de búsqueda. Este enfoque es más fácil y no requiere modificar los archivos de su tema. Puede agregar el siguiente fragmento preparando un Plugin de personalizaciones de SearchWP o usando un administrador de fragmentos 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 asegura que cada vez que un usuario realiza una búsqueda, el nombre del tipo de publicación (como "Página" o "Producto") se muestre antes del título de cada resultado en la lista de resultados de búsqueda. Utiliza el filtro the_title() de WordPress y verifica si el bucle actual forma parte de una consulta de búsqueda antes de aplicar la modificación.
Si está utilizando los resultados de plantilla personalizados de SearchWP o la búsqueda en vivo, el gancho anterior no se aplicará automáticamente porque esos resultados se generan de manera diferente. En su lugar, puede usar los propios ganchos de filtro de SearchWP para modificar la salida de cada entrada de resultado. El siguiente ejemplo muestra cómo anteponer la etiqueta del tipo de publicación antes del título tanto para la plantilla de SearchWP como para los resultados de búsqueda en vivo:
Aquí tiene un ejemplo utilizando una imagen de sustitución:
| <?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 esta personalización implementada, SearchWP mostrará automáticamente el nombre del tipo de publicación antes del título tanto en los resultados de su plantilla de búsqueda personalizada como en el menú desplegable de búsqueda en vivo. Este método proporciona una forma flexible y amigable con el código para brindar a los usuarios contexto adicional sobre el tipo de contenido que están viendo en los resultados de búsqueda sin modificar directamente los archivos de su tema.

