¿En qué podemos ayudarte?
Por defecto las URL de los resultados de búsqueda en WordPress tienen un estilo similar a dominio.com/?s=termino+de+búsqueda. ¿
Quieres tener URL amigables en las búsquedas de WordPress? Lograrlo no es complicado, no afectará el funcionamiento de tu sitio y tus visitantes lo agradecerán.
Veamos como hacerlo:
Nuestro objetivo es que nuestra URL de búsqueda tenga la siguiente estructura: dominio.com/prefijo-deseado/terminos+de+busqueda.
Implementando URL amigables en las búsquedas de WordPress
Buscando en Internet he encontrado dos propuestas, a primera vista muy sencillas:
Método 1 - Usando wp_redirect()
Es la solución más sencilla. Añadimos en el functions.php de nuestro tema activo el siguiente código
function cambiar_url_resultados_busqueda() {
if (is_search() && !empty($_GET["s"])) {
wp_redirect(home_url("/prefijo-deseado/") . urlencode(get_query_var("s")));
exit;
}
}
add_action("template_redirect","cambiar_url_resultados_busqueda");
Si hacemos una búsqueda, veremos que los resultados se muestran en una página con la URL modificada.
Método 2 - Modificando el archivo .htaccess
Abrimos el archivo .htaccess en la carpeta raíz de nuestro sitio web y añadimos las siguientes líneas
#Redirigir la URL búsquedas en WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC]
RewriteRule ^$ /prefijo-deseado/%1/? [NC,R,L]
</IfModule>
En este caso es el servidor web quien hace las modificaciones pertinentes a la URL
Con cualquiera de estos métodos tendremos activadas las URL amigables en las búsquedas de WordPress. Pero al realizar una búsqueda podemos llevarnos sorpresa desagradable.
¿Qué ha pasado? Pues que hemos redirigido los resultados a la página /prefijo-deseado de nuestra web. Y si no la hemos creado previamente (mi caso) tenemos un error 404 al canto. Quizás por eso las páginas que ofrecen estas soluciones no las tienen implementada. Crear una página de resultados es un esfuerzo adicional.
Solución mejorada para URL de búsquedas amigables
¿Qué hacer si no queremos o no podemos crear una página de resultados? La solución es obvia, solo tenemos que "informar" a WordPress que /prefijo-deseado es la nueva URL para los resultados de búsqueda.
Usaremos un código es similar al del Método 1.
function rj_cambiar_url_resultados_busqueda() {
global $wp_rewrite,
if (!is_search()) {return;}
if (!isset($wp_rewrite) || !is_object($wp_rewrite) || !$wp_rewrite->using_permalinks()) {return;}
$wp_rewrite->search_base = 'prefijo-deseado';
$wp_rewrite->flush_rules();
$search_base = $wp_rewrite->search_base;
if (!empty($_GET['s']) && strpos($_SERVER['REQUEST_URI'], "/{$search_base}/") === false) {
$url = home_url("/{$search_base}/" . urlencode(get_query_var('s')));
wp_redirect($url);
exit;
}
}
add_action("template_redirect","rj_cambiar_url_resultados_busqueda");
En nuestra función establecemos "prefijo-deseado" como URL base para las búquedas y regeneramos los permalinks. A partir de ese momento WordPress "ya se ha enterado del cambio" y las búsquedas funcionarán con normalidad. No necesitaremos crear una página específica para los resultados y todos contentos.
Este código puede ser modificado fácilmente para sus utilización en sitios con varios idiomas, por ejemplo con WPML. También podríamos definir diferentes URLs dependiendo del contenido buscado y, en general, etc. El límite lo pone nuestra imaginación.
El código se añade al functions.php del tema activo. Te recomiendo crear un tema hijo, si no lo has hecho ya.
Con esta sencilla receta, puedes ofrecer a tus visitantes una navegación más fluida por tu web.