WooCommerce Products with the visibility status hidden (excluded from catalog) are still indexed by the Yoast SEO tool. TO remove them from the automatically generated Sitemaps and set the index status to “noindex, nofollow” add the following 2 functions to your functions.php
add_filter( 'wpseo_sitemap_entry', 'we_remove_hidden_products', 99, 3); function we_remove_hidden_products($url, $type, $post) { if($post->post_type == 'product' && is_object_in_term( $post->ID, 'product_visibility', 'exclude-from-catalog')){ return ''; } return $url; } add_filter('wpseo_robots', 'we_noindex_hidden_products', 10, 2); function we_noindex_hidden_products($robots, $indexable) { if(!isset($indexable->model)) { return $robots; } if(!isset($indexable->model->object_id)) { return $robots; } if(is_object_in_term( $indexable->model->object_id, 'product_visibility', 'exclude-from-catalog')){ $robots = 'noindex, nofollow'; } return $robots; }