SearchWP Documentation

View the installation guide, browse the Knowledge Base, find out about SearchWP’s many hooks

Search WooCommerce SKUs (and Variation SKUs)

Using a couple of SearchWP’s hooks you can easily incorporate your Product SKUs (including Variation SKUs) into SearchWP searches.

We’re going to take advantage of SearchWP’s ability to absorb ‘extra’ data alongside each entry in its index. WooCommerce Products and Product Variations are each a custom post type. Product Variations are essentially children of their parent Product, so we’ll use a snippet to have all Product Variation SKUs indexed alongside the parent SKU:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Add WooCommerce Product (and Variation) SKUs to SearchWP.
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-skus-and-variation-skus/
add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) {
// If this is not a Product, there's nothing to do.
if ( 'product' !== get_post_type( $entry->get_id() ) ) {
return $data;
}
$my_extra_meta_key = 'searchwp_skus';
// Retrieve this Product SKU.
$data['meta'][ $my_extra_meta_key ] = [
get_post_meta( $entry->get_id(), '_sku', true )
];
// Retrieve all Variations.
$product_variations = get_posts( [
'post_type' => 'product_variation',
'posts_per_page' => -1,
'fields' => 'ids',
'post_parent' => $entry->get_id(),
] );
if ( empty( $product_variations ) ) {
return $data;
}
// Append all Product Variation SKUs.
foreach ( $product_variations as $product_variation ) {
$sku = get_post_meta( $product_variation, '_sku', true );
$data['meta'][ $my_extra_meta_key ][] = $sku;
}
return $data;
}, 20, 2 );
// Add our Extra Meta entry to SearchWP's UI.
// @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-skus-and-variation-skus/
add_filter( 'searchwp\source\attribute\options', function( $keys, $args ) {
if ( $args['attribute'] !== 'meta' ) {
return $keys;
}
// This key is the same as the one used in the searchwp\entry\data hook above, they must be the same.
$my_extra_meta_key = 'searchwp_skus';
$option = new \SearchWP\Option( $my_extra_meta_key, 'SearchWP WooCommerce SKUs' );
// If there's already a match, remove it because we want ours there.
$keys = array_filter( $keys, function( $option ) use ( $my_extra_meta_key ) {
return $my_extra_meta_key !== $option->get_value();
} );
// Add "SearchWP WooCommerce SKUs" Option
$keys[] = $option;
return $keys;
}, 20, 2 );

With the snippet in place we can now add SearchWP WooCommerce SKUs to our Products Source, making all Product (and Variation) SKUs searchable!

SearchWP WooCommerce product SKUs

Create a Better WordPress Search Experience Today

Never lose visitors to unhelpful search results again. SearchWP makes creating your own smart WordPress search fast and easy.

Get SearchWP Now
Multiple Search Engines Icon