7 códigos para mejorar el motor de búsqueda de WordPress

WordPress cuenta con un motor de búsqueda integrado que generalmente es citado como uno de los puntos débiles de la plataforma. Por ello, en este artículo he compilado una serie de código que te ayudarán a mejorar dicho motor de búsqueda en menos de lo que canta un gallo.

Código para mejorar el motor de búsqueda de WordPress

Aquí tienes 8 códigos para el motor de búsqueda del popular CMS.

motor de búsqueda

Redirigir al primer post si solo se ha encontrado uno

Vamos a empezar con un código súper práctico que redirigirá al lector al primer post automáticamente si solo se ha encontrado uno. Solamente debes pegarlo en fichero functions.php de tu tema y ya estaría.

add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
        }
    }
}

Mostrar el número de resultados

Cuando se realiza una búsqueda en tu sitio web desarrollado con WordPress, el CMS no devuelve el número de resultados encontrados. Mostrar este dato puede ser la mar de útil para la gente que busque un resultado concreto.

Para mostrar el número de resultados de la búsqueda, abre el archivo search.php. Dentro, búsca lo siguiente o algo similar.

<h2 class="pagetitle">Resultados de la búsqueda</h2>

Ahora, reemplázalo por esto:

<h2 class="pagetitle">Resultados para <?php 
/* Contador */ 
$allsearch = &new WP_Query("s=$s&showposts=-1"); 
$key = wp_specialchars($s, 1); 
$count = $allsearch->post_count; _e(''); 
_e('<span class="search-terms">'); 
echo $key; _e('</span>'); _e(' — '); 
echo $count . ' '; _e('articulos'); 

wp_reset_query(); ?></h2>

Resaltar la palabra buscada en los resultados

Existe una sencilla manera de hacer que los resultados de búsqueda de tu sitio web sean mucho más amigables: resaltar la palabra buscada. Para ello, abre el fichero search.php de tu tema y encuentra la función the_title(). Reemplázala con:

echo $title;

Ahora, justo antes de la línea que acabamos de modificar, añade este código:

<?php
	$title 	= get_the_title();
	$keys= explode(" ",$s);
	$title 	= preg_replace('/('.implode('|', $keys) .')/iu',
		'<strong class="search-excerpt">\0</strong>',
		$title);
?>

Guarda el fichero search.php y abre el style.css. Agrega la siguiente línea al final del archivo:

strong.search-excerpt { background: yellow; }

Limitar el número de posts por página

Por defecto, WordPress muestra 10 posts por página en los resultados de búsqueda. Si necesitas cambiar este número, solamente copia y pega el siguiente código en tu fichero functions.php. Reemplaza el número que aparece en el tercera línea (20) por el número de posts que quieras mostrar en los resultados del motor de búsqueda de WordPress.

function limit_posts_per_search_page() {
	if ( is_search() )
		set_query_var('posts_per_archive_page', 20); 
}

add_filter('pre_get_posts', 'limit_posts_per_search_page');

Buscar solo en un tipo de posts

Si quieres forzar al motor de búsqueda para que solo busque en un determinado tipo de post, aquí tienes la solución. Pega el siguiente código en el archivo functions.php de tu tema. Una vez lo tengas, no olvides cambiar el tipo de post donde quieras buscar en la cuarta línea.

function SearchFilter($query) {
  if ($query->is_search) {
    // Pon aqui el tipo de post en el que quieras buscar
    $query->set('post_type', 'feeds');
  }
  return $query;
}
 
add_filter('pre_get_posts','SearchFilter');

Limitar la búsqueda a categorías específicas

También es posible limitar la búsqueda a categorías específicas. Para ello, solo debes reemplazar los IDs que aparecen en la tercera línea del código de más abajo. Una vez lo tengas, pégalo en la plantilla search.php.

<?php if( is_search() )  :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("s=$s&paged=$paged&cat=1,2,3");
endif; ?>

Eliminar el motor de búsqueda de WordPress

Aunque el hecho de buscar suele ser una característica la mar de útil en la mayoría de sitios web, en ciertas ocasiones no se necesita para nada. ¿Sabías que puedes eliminar el motor de búsqueda de WordPress con unas cuantas líneas de código? Solamente debes incluir esta función que aparece en el código de abajo, dentro del fichero functions.php.

function fb_filter_query( $query, $error = true ) {
    if ( is_search() ) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = false;
 
        // to error
        if ( $error == true )
            $query->is_404 = true;
    }
}
 
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

Y hasta aquí nuestro artículo sobre 7 códigos para mejorar el motor de búsqueda de WordPress. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales. El icono de la imagen destacada es obra de Deepz. ¡Nos leemos!

1 Comentario

  1. Gracias por este gran articulo.
    Seria bueno que también que limites el resultado de búsqueda en el caso de que los resultados sea mas de 100 o 200 resultados.

    Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here