UA-51298262-10 Skip to main content
WordPress

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

By noviembre 21, 2019diciembre 12th, 2022No Comments

¿Necesitas códigos para mejorar el motor de búsqueda de WordPress? WordPress viene con motor de búsqueda integrado, el cual está considerado como uno de los puntos más débiles de esta plataforma CMS. Para mejorarlo, en Ayuda Hosting queremos mostrarles algunos códigos cortos o shortcodes que nos ayudarán a mejorar las búsquedas de nuestro WordPress.

También te puede interesar estos códigos que mejorarán WooCommerce.

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

Códigos que mejorarán el motor de búsqueda

A continuación, mostraremos algunos de esos códigos, los cuales tendremos que introducir en archivos del sistema de WordPress. El uso de códigos requiere de ciertos conocimientos básicos en el manejo de archivos de páginas web. En caso de no poseer estos conocimientos, recomendamos abstenerse de hacerlo. Asimismo, recomendamos hacer una copia de seguridad del su sitio de WordPress antes de realizar cualquier cambio.

Redirigir a los usuarios al primer post si solo se ha encontrado uno

Iniciaremos con un código bastante práctico que hará que nuestros lectores sean redirigidos al primer post en forma automática si el motor de búsqueda ha encontrado solo un post. Iniciaremos pegando el siguiente código en el archivo functions.php de nuestro tema.

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 ) );
        }
    }
}

Presentación del número de resultados de la búsqueda

Al realizar una búsqueda en nuestro sitio de WordPress, esta plataforma no presenta la cantidad de resultados encontrados. Para mostrar el número de resultados, emplearemos un código, el cual copiaremos en el archivo search.php. Una vez que estemos dentro, buscaremos el siguiente código o su similar.

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

A continuación, lo reemplazamos por:

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

Remarcar la palabra buscada en los resultados

Existe una forma bastante sencilla de lograr que los resultados en la búsqueda de nuestro sitio web resulten más vistosos. El que más se destaca es el remarcado de la palabra buscada. Para lograrlo copiaremos en el archivo search.php de nuestro tema, la función the_title(). Esa función la reemplazamos con:

echo $title;

A continuación y justo antes de la línea que hemos modificado, agregamos el siguiente código:

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

Para finalizar, guardamos el archivo search.php y abrimos el archivo style.css. Agregamos la siguiente línea al final del texto del archivo:

strong.search-excerpt { background: yellow; }

Determinar el número de posts presentados por página

WordPress tiene como característica mostrar 10 post por página en los resultados de las búsquedas. Esta característica viene por defecto en esa CMS. Si necesitamos cambiar el número de post presentados por página, podemos emplear el siguiente código, el cual pegaremos en nuestro archivo functions.php. Una vez pegado el código, reemplazamos el número mostrado en la tercera línea (20) por la cantidad de posts que deseamos mostrar en el resultado 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 una clase de post

Si queremos que el motor de búsqueda se encargue de buscar únicamente una determinada clase de post, ingresamos el siguiente código en el archivo functions.php de nuestro tema. Una vez que encontremos el tipo de post que deseamos buscar, debemos cambiarlo en la cuarta línea.

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

Limitar las búsquedas a determinadas categorías

También podemos limitar las búsquedas a determinadas categorías. Para lograr esto, sustituiremos los IDs de las categorías en la tercera línea del código que presentamos más abajo. Una vez que lo tengamos, lo pegamos en el archivo 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 los motores de búsqueda son una ventaja utilizable en la mayoría de los sitios web, en algunas ocasiones podríamos pensar que no hacen falta. Podemos eliminar el motor de búsqueda de WordPress empleando unas líneas de código. Incluiremos estas líneas, que se presentan a continuación, dentro del archivo 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;" ) );

Esperamos que este artículo sobre códigos para mejorar el motor de búsqueda de WordPress, les haya resultado útil. Más información sobre este y otros temas en Ayuda Hosting.

Ayuda Hosting

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies