Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo limitar los resultados de búsqueda para tipos de publicaciones específicos en WordPress

¿Alguna vez te has preguntado cómo puedes limitar tus resultados de búsqueda a tipos de publicaciones específicos? No es muy difícil. Ya te hemos mostrado cómo deshabilitar la función de búsqueda en WordPress modificando el archivo functions.php. Ahora vamos a hacer lo mismo, excepto para filtrar nuestros resultados de búsqueda.

Abre tu archivo functions.php y agrega los siguientes códigos:

function searchfilter($query) {

    if ($query->is_search && !is_admin() ) {
        $query->set('post_type',array('post','page'));
    }

return $query;
}

add_filter('pre_get_posts','searchfilter');

Nota la línea que dice

$query->set('post_type',array('post','page'));

Puedes filtrar los resultados de búsqueda cambiando los valores en la variable de matriz. Ahora está configurado para mostrar publicaciones y páginas, pero puedes modificarlo para mostrar lo que quieras.

Divulgación: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

26 ComentariosDeja una respuesta

  1. Gracias por este código, funcionó, ¡aunque lo actualizaste por última vez en 2013! Mi tema también usa Búsqueda Instantánea y me gustaría limitar los resultados allí también. ¿Cómo podría hacerlo?

  2. Mi tema actual muestra publicaciones con algunas líneas iniciales para el término/palabra buscada. Quiero personalizarlo para mostrar ese párrafo que contiene el término/palabra buscada en el extracto de la publicación. En otras palabras, quiero mostrar texto relacionado en el extracto de la publicación, no el párrafo inicial en los resultados de búsqueda. ¿Alguien puede ayudarme con esto...?

  3. Tengo una función sencilla en el archivo functions.php de mi tema, que solo debería filtrar las Publicaciones por un término de búsqueda... cuando busco algo ahora, aparece el Error HTTP 500 "El sitio web no puede mostrar la página". ¿Alguien tiene una idea de qué está mal con mi función?

    function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);

  4. Esto está restringiendo todos los formularios de búsqueda al tipo de publicación personalizado, incluido mi formulario de búsqueda en la barra lateral, que necesita devolver todos los resultados. Esto me funciona:

    function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $type = $_GET[‘post_type’]; if($type == ‘book’) { $query->set(‘post_type’,array(‘book’)); } } } return $query; } add_filter(‘pre_get_posts’,’searchfilter’);

    • Gracias por la ayuda, mejoré tu código para que la gente solo pueda buscar tipos de publicación permitidos.

      function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $types = (array) $_GET[‘post_type’]; $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false)); foreach($types as $type) { if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; } } if(count($filter_type)) { $query->set(‘post_type’,$filter_type); } } } } add_filter(‘pre_get_posts’,’searchfilter’);

      • ¿Cómo se implementa esto? Si estoy leyendo correctamente el comentario de Greg, queremos un solo formulario que esté limitado a un tipo de publicación, mientras mantenemos la búsqueda predeterminada intacta para otras áreas del sitio.

        Lo pregunto porque un sitio en el que estoy trabajando necesita una "Biblioteca de Recursos" que se pueda buscar, la cual me gustaría desarrollar sin comprometer la funcionalidad de búsqueda normal.

  5. Hola,

    No puedo restringir páginas en el filtro de búsqueda.
    Solo necesito la búsqueda dentro de las publicaciones y no de las páginas.

    $query->set(‘post_type’,array(‘post’));
    Esto también muestra páginas.

  6. Usé este código para restringir mis resultados de búsqueda a Páginas, no a Publicaciones. Funcionó en ese sentido, sin embargo, parece que solo busca los nombres de las páginas en lugar del contenido. Por ejemplo, si un usuario busca "precios", la página de Precios será un resultado, pero si buscan "precio" o "costo" (ambas palabras que están en la página de precios), no se encuentra nada. ¿Me falta algún fragmento de código?

  7. Hola,
    Tengo una pregunta y no he podido obtener una solución desde el mes pasado.
    He perdido categorías, páginas y redirecciones en mi blog, por lo que mi cuadro de búsqueda encuentra muchos resultados innecesarios cuando intentas buscar algo. Quiero personalizar mi search.php solo para la parte de categorías. En otras palabras, cuando busques algo, los resultados solo deben ser de las secciones de categorías. Así me libraré de resultados redundantes y duplicados. Mis códigos actuales son los siguientes... Por favor, ayúdame :)

  8. Entonces, ¿cómo aplicarías esto a una barra de búsqueda específica? No se aplicaría el filtro a todas las barras de búsqueda de tu sitio, ¿verdad?

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios se moderan de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO se publicará. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.