Skip to content

WooCommerce allow Search by SKU

//==============================================================================
//WOOCOMMERCE - FIXES - SEARCH - Enable search by SKU

function search_by_sku( $search, $query_vars ) {
	global $wpdb;
	if(isset($query_vars->query['s']) && !empty($query_vars->query['s'])){
		$args = array(
			'posts_per_page'  => -1,
			'post_type'       => 'product',
			'meta_query' => array(
				array(
					'key' => '_sku',
					'value' => $query_vars->query['s'],
					'compare' => 'LIKE'
				)
			)
		);
		$posts = get_posts($args);
		if(empty($posts)) return $search;
		$get_post_ids = array();
		foreach($posts as $post){
			$get_post_ids[] = $post->ID;
		}
		if(sizeof( $get_post_ids ) > 0 ) {
			$search = str_replace( 'AND (((', "AND ((({$wpdb->posts}.ID IN (" . implode( ',', $get_post_ids ) . ")) OR (", $search);
		}
	}
	return $search;
}
add_filter( 'posts_search', 'search_by_sku', 999, 2 );
An den Anfang scrollen