add_filter( 'posts_join', function( $join, $query ) {
if(
! $query->is_main_query()
|| is_admin()
|| ! is_search()
|| ! is_woocommerce()
) {
return $join;
}
global $wpdb;
$join .= " LEFT JOIN {$wpdb->postmeta} ccom_post_meta"
. " ON {$wpdb->posts}.ID = ccom_post_meta.post_id ";
return $join;
}, 10, 2 );
add_filter( 'posts_where', function( $where, $query ) {
if(
! $query->is_main_query()
|| is_admin()
|| ! is_search()
|| ! is_woocommerce()
) {
return $where;
}
global $wpdb;
$where = preg_replace(
"/\(\s*{$wpdb->posts}.post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
"( {$wpdb->posts}.post_title LIKE $1 )"
. " OR ( ccom_post_meta.meta_key = '_sku'"
. " AND ccom_post_meta.meta_value LIKE $1 )",
$where
);
return $where;
}, 10, 2 );
Product search: include SKU matching
Adds SKU to product search fields.
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.
