Noindex URLs With Sorting and Filter Parameters
Adds noindex to pages opened with sorting or filter parameters (such as ?orderby= or ?filter_color=), so crawlers do not index endless variations of the same list.
Opens WPIDE on
Code
// Query parameters that make a page a duplicate (a trailing _ matches any name starting with it).
$wpide_noindex_params = array( 'orderby', 'order', 'sort', 'view', 'per_page', 'min_price', 'max_price', 'rating_filter', 'filter_', 'query_type_' );
add_filter( 'wp_robots', function ( $robots ) use ( $wpide_noindex_params ) {
if ( empty( $_GET ) ) { // phpcs:ignore WordPress.Security.NonceVerification
return $robots;
}
foreach ( array_keys( $_GET ) as $param ) { // phpcs:ignore WordPress.Security.NonceVerification
foreach ( $wpide_noindex_params as $blocked ) {
if ( $param === $blocked || ( '_' === substr( $blocked, -1 ) && 0 === strpos( (string) $param, $blocked ) ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
return $robots;
}
}
}
return $robots;
} );
Notes
Names ending in an underscore match as prefixes. Tracking parameters like utm_source are left alone, since the canonical tag handles them.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.