No index hidden WooCommerce products from Yoast

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;
}

Leave a Reply

Your email address will not be published. Required fields are marked *