
Por defecto, cuando un visitante busca algo en tu WordPress, la URL que aparece en el navegador tiene este aspecto: tudominio.com/?s=plugins+wordpress&submit=Search. No es horrible, pero tampoco es lo mejor. Se puede mejorar con una URL del tipo tudominio.com/buscar/plugins-wordpress/, más limpia, más fácil de leer y más coherente con el resto de permalinks del sitio.
Depende del caso. Las páginas de resultados de búsqueda interna de WordPress están indexadas por defecto, pero Google las ve en general como contenido duplicado o de baja calidad. Lo habitual es marcarlas con noindex en el plugin SEO. Si las tienes en noindex, el formato de la URL no cambia nada para Google.
Donde sí importa es en la experiencia de usuario: una URL legible facilita compartir búsquedas, aparece mejor en analytics y es más coherente con la arquitectura del sitio.
El snippet original de este tutorial usa el hook template_redirect para interceptar las peticiones de búsqueda y redirigir a una URL más amigable. Aquí está la versión actualizada con is_search() y get_search_query():
/**
* Redirige las búsquedas de WordPress a URLs amigables.
* Convierte: /?s=termino en: /buscar/termino/
*/
function wpdirecto_search_url_redirect() {
if ( is_search() && ! empty( get_search_query() ) ) {
$search_term = get_search_query();
wp_safe_redirect(
home_url( '/buscar/' . urlencode( $search_term ) . '/' ),
301
);
exit;
}
}
add_action( 'template_redirect', 'wpdirecto_search_url_redirect' );Lenguaje del código: PHP (php)
Esta versión usa wp_safe_redirect() (más seguro que wp_redirect() porque solo permite redirecciones al mismo dominio) y el código de estado 301 para que los navegadores y Googlebot actualicen la URL correctamente.
Si tienes una página de WordPress con el slug buscar, el sistema de reescritura de URLs entrará en conflicto con la redirección de búsquedas. Comprueba en Ajustes > Permalinks que no haya ninguna página con ese slug. Si necesitas usar un slug diferente, cambia /buscar/ por /search/ o /resultados/ tanto en el código PHP como en la regla de reescritura.
Una alternativa es usar la API de reescritura de WordPress para registrar la nueva URL directamente como una regla, en lugar de hacer un redirect después de la carga:
/**
* Registra la regla de reescritura para URL de búsqueda amigable.
* URL: /buscar/{termino}/ -> /?s={termino}
*/
function wpdirecto_search_rewrite_rule() {
add_rewrite_rule(
'^buscar/([^/]*)/?$',
'index.php?s=$matches[1]',
'top'
);
}
add_action( 'init', 'wpdirecto_search_rewrite_rule' );Lenguaje del código: PHP (php)
Después de añadir este código, ve a Ajustes > Permalinks y haz clic en Guardar cambios (sin modificar nada) para que WordPress regenere el fichero .htaccess con la nueva regla. Sin este paso la URL no funcionará.
La diferencia con el método 1: este no hace un redirect visible, sino que procesa la URL internamente. El que llega a /buscar/plugins/ recibe directamente los resultados de búsqueda sin redirección 301. El método 1 es más simple de implementar; el método 2 es más elegante desde el punto de vista técnico.
Si decides indexar las páginas de búsqueda (caso poco habitual), hay tres cosas que configurar:
?s=. Rank Math y Yoast lo hacen automáticamente si detectan el cambio.noindex (lo normal), todo esto no afecta al SEO. El noindex debe aplicarse a la nueva URL también, no solo a /?s=.Si tu objetivo es mejorar los resultados de búsqueda (no solo las URLs), SearchWP es la opción más potente: indexa contenido de custom fields, PDFs, WooCommerce y permite ajustar la relevancia de los resultados. La versión gratuita ya mejora notablemente el buscador nativo.
Si lo que necesitas es solo personalizar la URL, el snippet es más que suficiente. Para una configuración más profunda del servidor y las reglas de reescritura de Apache, el artículo sobre trucos de .htaccess en WordPress te dará una visión más completa. Y si quieres mejorar el SEO técnico global del sitio, la guía de optimización SEO en WordPress cubre otros aspectos complementarios. Para la limpieza técnica general del sitio, el artículo sobre limpiar la base de datos de WordPress también puede ser de utilidad.
Si usas el método con add_rewrite_rule(), sí. Tienes que ir a Ajustes > Permalinks y hacer clic en Guardar cambios para que WordPress regenere el .htaccess con la nueva regla. Si usas el método template_redirect, no es necesario: el redirect se ejecuta en PHP antes de que Apache intervenga.
Lo más probable es que el slug buscar esté en conflicto con una página existente, o que no hayas regenerado los permalinks. Comprueba en Ajustes > Permalinks y, si sigue fallando, cambia el slug por otro que no uses en tu sitio.
En la mayoría de casos, no. Los resultados de búsqueda tienen contenido variable y duplicado que no aporta valor a Google. Lo habitual es marcarlos con noindex desde el plugin SEO. Las páginas de búsqueda indexadas suelen recibir penalizaciones por contenido de baja calidad.
Con cautela. WooCommerce tiene su propio sistema de búsqueda que puede interferir. Si tu tienda usa el buscador de WooCommerce extensivamente, prueba el snippet en un entorno de staging antes de activarlo en producción. SearchWP tiene una integración específica para WooCommerce que evita estos conflictos.
Sí. wp_redirect() permite redirigir a cualquier URL, incluyendo dominios externos, lo que puede usarse maliciosamente. wp_safe_redirect() solo permite redirecciones al mismo dominio (o a los dominios que hayas aprobado explícitamente). Para redirecciones internas, siempre usa wp_safe_redirect().
