We’ve already seen how to only display products from a single category on the Shop page. Today, we’ll do something similar, but we’ll target the search result.
Code is somewhat similar to the example I linked to above, so it will use once again the “pre_get_posts” filter in order to modify the query before products are returned on the screen. Enjoy!

PHP Snippet: Exclude Products From a Given Category @ WooCommerce Search Result Page
/**
* @snippet Exclude Cat @ WooCommerce Product Search Results
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @compatible WooCommerce 6
* @donate $9 https://www.tutoraspire.com
*/
add_action( 'pre_get_posts', 'tutoraspire_exclude_category_woocommerce_search' );
function tutoraspire_exclude_category_woocommerce_search( $q ) {
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_search() ) return;
if ( ! is_admin() ) {
$q->set( 'tax_query', array( array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'courses' ), // change 'courses' with your cat slug/s
'operator' => 'NOT IN'
)));
}
}