Agrupar Resultados da Pesquisa ao Vivo por Categoria
Personalizar a exibição dos resultados para a Extensão de Pesquisa ao Vivo do SearchWP foi projetado para facilitar a personalização da maneira que você desejar. Se, por exemplo, você quiser agrupar seus resultados por Categoria de Postagem, você pode usar isso como ponto de partida em seu modelo de resultados personalizado:
| <?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 | |
| } | |
| } |

