¿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.

0 0 votes
Valoración del artículo
Suscribir
Notificar de
guest
0 Comentarios
Inline Feedbacks
View all comments