add_filter( 'the_posts', function( $posts, $query ) {
if( ! is_search() || ! is_main_query() || ! $query ) {
return $posts;
}
// Product tags search
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'product_tag' => get_search_query(),
'post__not_in' => wp_list_pluck( $posts, 'ID' ),
];
$results = get_posts( $args );
// Store any new results
if( $results ) {
$posts = array_merge( $posts, $results );
$query->found_posts = sizeof( $posts );
}
// Product categories search
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'product_cat' => get_search_query(),
'post__not_in' => wp_list_pluck( $posts, 'ID' ),
];
$results = get_posts( $args );
// Store any new results
if( $results ) {
$posts = array_merge( $posts, $results );
$query->found_posts = sizeof( $posts );
}
// Pass results
return $posts;
}, 10, 2 );
Product search include categories and tags
Adds categories and tags to product search.
If looking for a plugin version of this, try WooCommerce Product Search
How to use
- Log into a staging, development, or locally hosted clone of your site
- Install and activate Code Snippets
- WP Admin > Snippets > Add New
- Copy and paste the code from the Description tab above
- Check to ensure formatting came over properly and no syntax errors show up in the editor
- Customize the code as desired
- Add a meaningful title
- Select whether to run on front-end or back-end (or both)
- Click “Save and Activate”
- Test your site to ensure it works
- Disable if any problems, or recover
- Repeat for live environment
License
All code snippets are licensed GPLv2 (or later) matching WordPress licensing.
Disclaimer of warranty:
Except when otherwise stated in writing the copyright holders and/or other parties provide the program as-is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
Support
- Describe the issue and what you’ve observed.
- Describe your expected outcome(s).
- List steps to reproduce the issue.
- Optionally provide screen-shot or video URLs.
- Email to [email protected]
