Agrupar Resultados de Búsqueda en Vivo por Categoría
Personalizar la visualización de resultados para la Extensión de búsqueda en vivo de SearchWP ha sido diseñada para facilitar la personalización de cualquier manera que desee. Si, por ejemplo, desea agrupar sus resultados por categoría de publicación, puede usar esto como punto de partida en su plantilla de resultados personalizada:
| <?php if ( ! have_posts() ) : ?> | |
| <p>No results</p> | |
| <?php return; endif;?> | |
| <?php | |
| global $post; | |
| $grouped_results = []; | |
| $no_term_results = []; | |
| while ( have_posts() ) { | |
| the_post(); | |
| $categories = get_the_terms( $post, 'category' ); | |
| // Group by the first Category returned. | |
| if ( ! empty( $categories ) && isset( $categories[0] ) ) { | |
| // If this group doesn't exist yet, create it. | |
| if ( ! array_key_exists( $categories[0]->term_id, $grouped_results ) ) { | |
| $grouped_results[ $categories[0]->term_id ] = [ | |
| 'term' => $categories[0], | |
| 'results' => [], | |
| ]; | |
| } | |
| // Add this result to the group. | |
| $grouped_results[ $categories[0]->term_id ]['results'][ $post->ID ] = get_post( $post->ID ); | |
| } else { | |
| $no_term_results[ $post->ID ] = get_post( $post->ID ); | |
| } | |
| } | |
| // Output grouped results. | |
| if ( ! empty( $grouped_results ) ) { | |
| foreach ( $grouped_results as $grouped_result ) { | |
| echo '<h3>' . esc_html( $grouped_result['term']->name ) . '</h3>'; | |
| foreach ( $grouped_result['results'] as $result ) { | |
| ?> | |
| <div class="searchwp-live-search-result" role="option" id="" aria-selected="false"> | |
| <p> | |
| <a href="<?php echo esc_url( get_permalink( $result->ID ) ); ?>"> | |
| <?php echo wp_kses_post( get_the_title( $result->ID ) ); ?> » | |
| </a> | |
| </p> | |
| </div> | |
| <?php | |
| } | |
| } | |
| } | |
| // Output ungrouped results. | |
| if ( ! empty( $no_term_results ) ) { | |
| foreach ( $no_term_results as $result ) { | |
| ?> | |
| <div class="searchwp-live-search-result" role="option" id="" aria-selected="false"> | |
| <p> | |
| <a href="<?php echo esc_url( get_permalink( $result->ID ) ); ?>"> | |
| <?php echo wp_kses_post( get_the_title( $result->ID ) ); ?> » | |
| </a> | |
| </p> | |
| </div> | |
| <?php | |
| } | |
| } |

