Modify the standard WordPress search form to perform faceted search.
<?php | |
add_filter( 'get_search_form', 'prefix_render_faceted_search_form' ); | |
/** | |
* Adds checkboxes to the search form for searching specific post types. | |
* | |
* @param string $form The search form HTML output. | |
* | |
* @return string | |
*/ | |
function prefix_render_faceted_search_form( $form ) { | |
// Associative array of post type names and labels. | |
$post_types = array( | |
'book' => 'Books', | |
'movie' => 'Movies', | |
'music' => 'Music', | |
); | |
// Build the facet checkboxes. | |
$facet_checkboxes = ''; | |
foreach ( $post_types as $name => $label ) { | |
$facet_checkboxes .= sprintf( '<label><span class="screen-reader-text">%1$s %2$s</span><input type="checkbox" name="post_type[]" value="%3$s">%2$s</label>', | |
_x( 'Search', 'label' ), | |
$label, | |
$name | |
); | |
} | |
$form = '<form role="search" method="get" class="search-form" action="' . esc_url( home_url( '/' ) ) . '"> | |
<div class="search-form__facets">' . $facet_checkboxes . '</div> | |
<label> | |
<span class="screen-reader-text">' . _x( 'Search for:', 'label' ) . '</span> | |
<input type="search" class="search-field" placeholder="' . esc_attr_x( 'Search …', 'placeholder' ) . '" value="' . get_search_query() . '" name="s" /> | |
</label> | |
<input type="submit" class="search-submit" value="' . esc_attr_x( 'Search', 'submit button' ) . '" /> | |
</form>'; | |
return $form; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment