Visualizza tutti i risultati di ricerca

19 mar 2012, 13:53:02
Visualizzazioni: 23.2K
Voti: 3

Esiste un modo per visualizzare tutti i risultati di ricerca nel file search.php? Attualmente vengono mostrati solo 10 risultati (come impostato in WordPress settings > general).

0
Tutte le risposte alla domanda 3
5

Il modo rapido e sporco per farlo sarebbe usare nuovamente query_posts, raddoppiando il numero di chiamate al database.

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

Sarebbe meglio aggiungere questo a functions.php, modificando la query originale prima che venga eseguita:

function change_wp_search_size($query) {
    if ( $query->is_search ) // Assicurati che sia una pagina di ricerca
        $query->query_vars['posts_per_page'] = 10; // Cambia 10 con il numero di articoli che vuoi mostrare

    return $query; // Restituisci le nostre variabili di query modificate
}
add_filter('pre_get_posts', 'change_wp_search_size'); // Colleghiamo la nostra funzione personalizzata al filtro della richiesta

Se vuoi mostrare un numero illimitato di articoli, usa -1.

19 mar 2012 14:06:29
Commenti

showposts è deprecato, usa posts_per_page. In ogni caso il primo esempio non funzionerà - ignorerà il termine di ricerca e mostrerà semplicemente gli ultimi 999 post. Dovresti unirlo alla query corrente (vedi Codex). La seconda risposta è di gran lunga la migliore e, come fa notare @WouterB, evita di rieseguire la query sul database.

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

Grazie @Stephen Harris, ho copiato e incollato il primo esempio da un blog molto vecchio, e poi ho effettivamente realizzato che su un sito più recente ho usato la seconda opzione. Non ho approfondito i dettagli.

WouterB WouterB
19 mar 2012 14:42:57

Grazie Wouter funziona! Uso anche questo codice per visualizzare il numero di risultati global $wp_query; $total_results = $wp_query->found_posts; echo $total_results; e ora mostra sempre 0.

Andycap Andycap
20 mar 2012 19:25:00

Per favore, non suggerire query_posts() nemmeno come soluzione "rapida e approssimativa".

s_ha_dum s_ha_dum
14 nov 2015 16:26:01

Per mostrare tutti i post, come menzionato nella domanda, puoi cambiare 10 con -1 $query->query_vars['posts_per_page'] = -1;

allicarn allicarn
1 giu 2018 06:03:00
1

Molto semplice: -1 sovrascrive il limite. Basta unire la query di default con i tuoi argomenti personalizzati.

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

Grazie kaiser, preferisco l'altro metodo senza duplicare le query. Comunque, anche questo funzionerebbe.

Andycap Andycap
20 mar 2012 19:27:10
1

Prova http://wordpress.org/extend/plugins/custom-post-limits/ Puoi impostare limiti/quantità di articoli indipendenti per ogni tipo di risultato, come ricerca, categoria, tag, archivi, autore, paginazione, ecc., senza bisogno di template di pagina o loop personalizzati.

19 mar 2012 15:09:05
Commenti

Questa volta preferisco ottenere il risultato senza un plugin. Tuttavia, avevo già utilizzato quello che hai suggerito ed è molto utile per personalizzare i risultati di ricerca.

Andycap Andycap
20 mar 2012 19:29:44