En esta entrada te explico como prevenir que las páginas o entradas de tu WordPress que has marcado como noindex, y que por lo tanto no deseas que los buscadores las rastreen, no aparezcan tampoco en los resultados de búsqueda del buscador interno de WordPress.
- Nivel de dificultad: Fácil
- Conocimientos previos: WordPress básico
- Tiempo de implementación: 3 minutos
Caso 1: Si estás usando Rankmath sigue estas instrucciones
Rank Math normalmente usa una clave meta como rank_math_robots para almacenar configuraciones relacionadas con la indexación.
Modifica la consulta de búsqueda usando pre_get_posts:
Agrega el siguiente código al archivo funciones.php de tu tema. Este código se vincula a la consulta de búsqueda antes de ejecutarla y la modifica para excluir publicaciones marcadas como noindex.
add_action( 'pre_get_posts', 'exclude_noindex_pages_from_search' );
function exclude_noindex_pages_from_search( $query ) {
if ( $query->is_search && !is_admin() ) {
$query->set( 'meta_query', array(
'relation' => 'OR',
array(
'key' => 'rank_math_robots',
'value' => 'noindex',
'compare' => 'NOT LIKE'
),
array(
'key' => 'rank_math_robots', // Assume 'noindex' is not set at all if key doesn't exist
'compare' => 'NOT EXISTS'
)
));
}
}
Recuerda purgar la caché, si usas algún plugin de optimización, antes de probar si funciona.
Explicación del código
Esta pieza de código verifica si la consulta actual es una consulta de búsqueda y no una consulta de administrador. Luego modifica la parte de la metaconsulta de la búsqueda para excluir publicaciones donde el valor meta de rank_math_robots incluye noindex. También considera publicaciones que no tienen configurada la metaclave de ranking_math_robots.
Caso 2: Si estás usando YOAST SEO sigue estas instrucciones
Yoast SEO utiliza diferentes claves meta para almacenar la configuración de indexación. Por lo general, la clave es _yoast_wpseo_meta-robots-noindex
. Asegúrate de verificar esto en la documentación de Yoast o directamente en la base de datos.
Modificar la Consulta de Búsqueda Usando pre_get_posts
add_action( 'pre_get_posts', 'exclude_noindex_pages_from_search' );
function exclude_noindex_pages_from_search( $query ) {
if ( $query->is_search && !is_admin() ) {
$query->set( 'meta_query', array(
'relation' => 'OR',
array(
'key' => '_yoast_wpseo_meta-robots-noindex',
'value' => '1', // Asegúrate de que '1' es el valor usado por Yoast para 'noindex'.
'compare' => '!='
),
array(
'key' => '_yoast_wpseo_meta-robots-noindex',
'compare' => 'NOT EXISTS'
)
));
}
}
Te repito lo mismo que antes, si usas algún plugin de optimización purga la caché antes de probar si funciona.
Explicación del código
Este código evita que se incluyan en los resultados de búsqueda las publicaciones que tienen el valor ‘1’ (indicando noindex) en la clave meta _yoast_wpseo_meta-robots-noindex
. También incluye publicaciones que no tienen esta clave meta configurada.