Mostrar todos los resultados de búsqueda

19 mar 2012, 13:53:02
Vistas: 23.2K
Votos: 3

¿Hay alguna manera de mostrar todos los resultados de búsqueda en el archivo search.php? Actualmente solo está mostrando 10 resultados (según lo establecido en WordPress settings > general).

0
Todas las respuestas a la pregunta 3
5

La forma rápida y sucia de hacerlo sería usar query_posts nuevamente, duplicando el número de llamadas a la base de datos.

<?php if (have_posts()) : ?>
<?php query_posts('showposts=999'); ?>

Una mejor opción sería agregar esto a functions.php, modificando la consulta original antes de que se ejecute:

function change_wp_search_size($query) {
    if ( $query->is_search ) // Asegurarse de que es una página de búsqueda
        $query->query_vars['posts_per_page'] = 10; // Cambiar 10 por el número de posts que deseas mostrar

    return $query; // Retornar nuestras variables de consulta modificadas
}
add_filter('pre_get_posts', 'change_wp_search_size'); // Conectar nuestra función personalizada al filtro de solicitud

Si deseas mostrar una cantidad ilimitada de posts, usa -1.

19 mar 2012 14:06:29
Comentarios

showposts está obsoleto, usa posts_per_page. En cualquier caso, el primer ejemplo no funcionará - ignorará el término de búsqueda y solo mostrará los últimos 999 posts. Necesitarías combinarlo con la consulta actual (ver Codex). La segunda respuesta es con diferencia la mejor, y como señala @WouterB, evita volver a consultar la base de datos.

Stephen Harris Stephen Harris
19 mar 2012 14:33:24

Gracias @Stephen Harris, copié y pegué el primer ejemplo de un blog muy antiguo, y luego me di cuenta de que en un sitio más nuevo usé la segunda opción. No revisé los detalles.

WouterB WouterB
19 mar 2012 14:42:57

¡Gracias Wouter, funciona! También uso este código para mostrar el número de resultados global $wp_query; $total_results = $wp_query->found_posts; echo $total_results; y ahora siempre muestra 0.

Andycap Andycap
20 mar 2012 19:25:00

Por favor no sugieras query_posts() incluso como una solución "rápida y sucia".

s_ha_dum s_ha_dum
14 nov 2015 16:26:01

Para mostrar todos los posts, como se menciona en la pregunta, puedes cambiar 10 por -1 $query->query_vars['posts_per_page'] = -1;

allicarn allicarn
1 jun 2018 06:03:00
1

Bastante sencillo: -1 anula el límite. Simplemente combina la consulta por defecto con tus argumentos personalizados.

global $wp_query;
query_posts( 
    wp_parse_args(
         $wp_query->query
        ,array( 'posts_per_page' => -1 )
    )
);
19 mar 2012 18:18:02
Comentarios

Gracias kaiser, prefiero el otro método sin duplicar las consultas. De todos modos, esto también funcionaría.

Andycap Andycap
20 mar 2012 19:27:10
1

Prueba http://wordpress.org/extend/plugins/custom-post-limits/. Puedes establecer límites/números de publicaciones independientes para todo tipo de resultados, como búsquedas, categorías, etiquetas, archivos, autores, páginas paginadas, etc., sin necesidad de plantillas de página o bucles personalizados.

19 mar 2012 15:09:05
Comentarios

Esta vez prefiero obtener el resultado sin un plugin. Sin embargo, ya había utilizado el que sugeriste y es muy útil para personalizar los resultados de búsqueda.

Andycap Andycap
20 mar 2012 19:29:44