Sovrascrivere il numero predefinito di post da mostrare per un singolo loop?

7 feb 2011, 22:19:27
Visualizzazioni: 14.3K
Voti: 4

È possibile sovrascrivere il numero impostato di post del blog da mostrare per pagina (come definito nelle Impostazioni di lettura nell'admin di WordPress)? Vorrei fare in modo che un loop personalizzato che sto utilizzando mostri un numero illimitato di post.

0
Tutte le risposte alla domanda 5
2
10

L'argomento che controlla quanti post vengono mostrati nella query è posts_per_page

<?php query_posts( array( 
                         'post_type' => 'post',
                         'posts_per_page' => -1 ) 
      ); 
?>

Da notare inoltre che c'è un bug nella versione 3.0 che impedisce all'intero -1 di mostrare tutti i post. È stato risolto nella 3.1 ma una soluzione alternativa sarebbe usare un numero molto alto invece di -1

vedi:

http://core.trac.wordpress.org/ticket/15150

7 feb 2011 23:13:58
Commenti

C'è un errore di battitura nel tuo parametro per posts_per_page. Hai scritto post_per_page invece di posts_per_page. (Ho provato a modificare il tuo post, ma non ho i permessi per farlo). Grazie mille!

user1462 user1462
7 feb 2011 23:29:35

Evita questa funzione, è pessima per le performance, causa molti problemi con l'impaginazione, ecc. Usa pre_get_posts per modificare ciò che viene mostrato in una pagina, e WP_Query se vuoi recuperare post per altri motivi. Non usare mai query_posts

Tom J Nowell Tom J Nowell
3 apr 2020 18:55:11
0

Certo, modifica la query aggiungendo

<?php query_posts('post_type=post&numberposts=-1'); ?>

7 feb 2011 22:43:18
0

Eileen ha ragione ma è meglio utilizzare gli argomenti come un array <?php query_posts( array( 'post_type' => 'post', 'numberposts' => -1 ) ); ?>

7 feb 2011 23:01:25
0

Ho avuto lo stesso problema.. Ho deciso di aggiungere una variabile personalizzata e poi intercettare quella variabile durante pre_get_posts per impostare il query_var post_per_page:

// Aggiunge una variabile personalizzata alla lista delle query vars
function custom_query_vars_filter($vars) {
  $vars[] = 'post_per_page_override';
  return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );


// Modifica la query per impostare il numero di post per pagina
add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars['post_per_page_override'] == '3') {
        $query->set('posts_per_page', '3');
    }
}

Poi sono andato oltre e ho fatto in modo che prenda l'esatto numero che vuoi visualizzare nella variabile personalizzata:

// Aggiunge una variabile personalizzata alla lista delle query vars
function custom_query_vars_filter($vars) {
  $vars[] = 'post_per_page_override';
  return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );


// Modifica la query per impostare un numero dinamico di post per pagina
add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars['post_per_page_override']) {
        $customPPPlimit = $query->query_vars['post_per_page_override'];
        $query->set('posts_per_page', $customPPPlimit);
    }
}

Ha funzionato nel mio caso..

1 mar 2017 01:08:00
0

Se stai utilizzando un ciclo personalizzato, specifica semplicemente posts_per_page, ad esempio:


$query = new \WP_Query( [ 'posts_per_page' => 100 ] );
if ( $query->have_posts() ) {
    ......ecc

Potresti impostare posts_per_page a -1 per ottenere post illimitati, ma questa è una pessima pratica. Invece, imposta il numero di post che ritieni il tuo server possa gestire senza collassare, in modo che il tuo sito non vada giù se vengono creati troppi post. 200 è un buon limite superiore.

In alternativa, utilizza il filtro pre_get_posts per modificare i parametri passati alle query:

add_action( 'pre_get_posts', function ( $query ) {
    if ( is_admin() ) {
        return;
    }
    $query->set( 'posts_per_page', 100 );
}

Nota che questo imposterà tutte le query a 100 pagine, inclusi feed, REST API, XMLRPC, ecc.

Inoltre, alcune persone potrebbero consigliare query_posts, ma questa è una cattiva pratica e causerà molti altri problemi

3 apr 2020 19:05:55