Cómo limitar los resultados de búsqueda de WordPress

Cómo limitar los resultados de búsqueda de WordPress

Todos sabemos que la búsqueda predeterminada de WordPress no es muy buena o al menos no tan buena como la de Google 🙂, pero hay algunos consejos para ayudar a mejorar los resultados de búsqueda. Este artículo le mostrará diferentes métodos para limitar sus resultados de búsqueda a tipos o categorías específicas de publicaciones y cómo cambiar el número predeterminado o los resultados de búsqueda por página.

Limitar los resultados de búsqueda de WordPress por categoría

A continuación, se muestran algunos métodos que puede utilizar para limitar los resultados de búsqueda por categoría, que pueden ser muy útiles para sitios como WPExplorer.com, que tiene secciones como temas, complementos y blogs.

1. Usando un campo de entrada oculto en su Searchform.php

Este es el método que utilizo actualmente en WPExplorer.com, por lo que cuando las personas busquen el sitio principal, solo obtendrán resultados de búsqueda en la categoría “Temas de WordPress”. Todo lo que tienes que hacer es agregar una entrada oculta a tu searchform.php con una identificación de “gato” y la identificación de categoría para el valor.

Un searchform.php básico

<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="text" size="16" name="s" value="Search"  />
    <input type="submit" value="Go" />
</form>

Agregue lo siguiente para limitar la categoría con un ID de 5

<input type="hidden" name="cat" id="cat" value="5" />

Código completo

<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="hidden" name="cat" id="cat" value="5" />
    <input type="text" size="16" name="s" value="Search"  />
    <input type="submit" value="Go" />
</form>

2. Agregar una declaración de consulta a su archivo Search.php

Otra forma útil de limitar los resultados de su búsqueda a categorías específicas es agregar una consulta a su archivo search.php justo antes de la declaración if.

Incluir categorías en la búsqueda

Al utilizar ID positivos en la consulta, puede definir qué categorías desea mostrar en los resultados de la búsqueda (mostrar categorías con ID 1, 2 y 3).

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

Excluir categorías de la búsqueda

También puede utilizar ID negativos para excluir determinadas categorías de su página de búsqueda (excluya la categoría con un ID de 7)

<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts( "s=$s&paged=$paged&cat=-7" );
?>

Excluir páginas de su página de búsqueda

A continuación, se muestran algunas formas en las que puede limitar los resultados de la búsqueda para excluir páginas de los resultados y solo mostrar publicaciones.

Usar una función

Simplemente inserte la siguiente función en su archivo functions.php

// Remove pages from search results
function exclude_pages_from_search($query) {
    if ( $query->is_main_query() && is_search() ) {
        $query->set( 'post_type', 'post' );
    }
    return $query;
}
add_filter( 'pre_get_posts','exclude_pages_from_search' );

Usando un condicional en su archivo Search.php

Otra forma de eliminar páginas de su archivo search.php es insertar un condicional en su archivo search.php justo después de “while (have_posts ())”. Esto no se recomienda si está utilizando un tema de terceros porque si actualiza el tema en el futuro perderá sus cambios, si es su propio tema personalizado, entonces está bien.

<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
   // Exclude pages from the loop
   if ( is_search() && ( $post->post_type=='page' ) ) {
       continue;
   } ?>

Excluir una o más páginas específicas

También puede excluir publicaciones / páginas específicas de sus páginas de resultados de búsqueda en sus ID utilizando el siguiente código agregado en el archivo functions.php. Simplemente edite la tabla de ID para incluir las ID de las páginas o publicaciones que desea excluir.

// Exclude specific posts/pages from search
function exclude_pages_from_search($query) {
	if ( $query->is_main_query() && is_search() ) {
		$exclude_ids = array( 7, 19 , 21 ); // Array of the ID's to exclude
		$query->set( 'post__not_in', $exclude_ids );
	}
	return $query;
}
add_filter( 'pre_get_posts','exclude_pages_from_search' );

Limita la búsqueda al tipo de publicación

Una de las razones para usar tipos de puertos en WordPress es que no los quiere en su flujo principal o bucle de wp, razón por la cual son excelentes para cosas como controles deslizantes, testimonios, servicios, etc. Sin embargo, sus publicaciones personalizadas aún pueden aparecer en su página de resultados de búsqueda.

1. Excluya un tipo de publicación personalizada de los resultados de búsqueda.

Todo lo que necesita hacer para excluir publicaciones personalizadas de los resultados de búsqueda es establecer el siguiente argumento al definir su publicación personalizada (Más información):

'exclude_from_search' => true

2. Usar un campo oculto en el formulario de búsqueda para mostrar solo publicaciones de un tipo de publicación personalizado específico

También puede usar un campo oculto en su formulario de búsqueda de la misma manera que lo hizo para limitar categorías si desea configurar un formulario de búsqueda avanzada que solo buscará en el tipo de publicación personalizada especificado.

<input type="hidden" name="post_type" value="portfolio" />

Este campo adicional entraría en su formulario de búsqueda y simplemente reemplazaría el lugar donde dice “cartera” con su propio nombre de tipo de publicación personalizado. Este método es ideal si tiene una determinada sección en su sitio que utiliza tipos de publicaciones personalizadas y desea que los usuarios puedan buscar solo esas publicaciones específicas.

Cambiar el número de resultados por página

De forma predeterminada, WordPress usa el número definido en Configuración> Lectura (las páginas del blog se muestran como máximo …) para definir el número de resultados que aparecen en la página de resultados de búsqueda. Si desea mostrar más, menos o un sinfín de resultados en su página de búsqueda, puede hacerlo usando el siguiente código:

// Alter search posts per page
function myprefix_search_posts_per_page($query) {
    if ( $query->is_search ) {
        $query->set( 'posts_per_page', '10' );
    }
    return $query;
}
add_filter( 'pre_get_posts','myprefix_search_posts_per_page' );

Este código irá a su archivo functions.php. Preferiblemente en su tema hijo si está trabajando con un tema de otro desarrollador. El código establecerá sus resultados de búsqueda en “10” por página. Puedes cambiar el número a lo que quieras. Para que sus resultados de búsqueda sean ilimitados, use -1. O usa un complemento como Búsqueda de juego de herramientas para agregar paginación a sus resultados.

Búsqueda avanzada / mejorada

WordPress de forma predeterminada busca en función de cualquier contenido dentro de sus publicaciones y páginas. Sería posible cambiar cómo funciona la búsqueda a través de funciones, pero es bastante complejo, por lo que si desea cambiar cómo funciona realmente la búsqueda (lo que está buscando), puede considerar usar un complemento. Como Búsqueda extendida de WP conectar. Haga clic en el banner a continuación para verificarlo o búsquelo en su panel de WordPress debajo Complementos> Agregar nuevo.

Complemento de búsqueda extendida de WP

Este complemento le permitirá controlar mejor la búsqueda predeterminada si desea buscar por meta, categorías, etiquetas, términos, título … etc. Puede incluir o excluir ciertos tipos de publicaciones de la búsqueda, excluir publicaciones que sean más antiguas que una fecha específica, cambiar la cantidad de elementos que se muestran en los resultados de búsqueda y más.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba