Skip to content

Instantly share code, notes, and snippets.

@searchwpgists
Last active April 7, 2022 15:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save searchwpgists/d17c723b9663cddb86b99cde387dbc81 to your computer and use it in GitHub Desktop.
Save searchwpgists/d17c723b9663cddb86b99cde387dbc81 to your computer and use it in GitHub Desktop.
Output SearchWP Live Ajax Search results grouped by Category taxonomy term
<?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 ) ); ?> &raquo;
</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 ) ); ?> &raquo;
</a>
</p>
</div>
<?php
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment