Come impostare i post per pagina usando WP_Query()

26 set 2011, 20:14:26
Visualizzazioni: 65.7K
Voti: 4

Sto cercando di impostare dinamicamente il numero di posts_per_page usando una mia variabile. Questo codice funziona bene:

query_posts( $query_string  . "&posts_per_page=" . $myvar )
// poi visualizza il loop usando get_template_part( 'loop' );

Questo funziona bene, ma vorrei sapere come farlo usando $wp_query invece di query_posts. Tuttavia, questo non funziona:

$wp_query->set('posts_per_page', $myvar)
// poi visualizza il loop usando get_template_part( 'loop' );

Questo non ha alcun effetto sul numero di post visualizzati. Sto usando il metodo set in modo errato o c'è qualcosa che mi sfugge?

0
Tutte le risposte alla domanda 4
0
14

query_posts eseguirà nuovamente la query (distruggendo la wp_query corrente e creandone una nuova, poi eseguendo la query con i parametri che le passi)

Per ottenere lo stesso comportamento dopo aver impostato il nuovo parametro con set_var devi rieseguire la query sul database usando qualcosa come questo

 $wp_query->set('posts_per_page', 1);
 $wp_query->query($wp_query->query_vars);
26 set 2011 20:41:29
0

quando chiami query_posts con una query modificata nel tuo template, stai effettivamente eseguendo un'altra query e scartando quella originale. provare a impostare una query var nel tuo template non funziona perché la query originale è già avvenuta. per usare $wp_query->set() devi agganciarti prima che il database venga interrogato, ad esempio su pre_get_posts.

26 set 2011 20:39:29
1

Perché hai bisogno di usare $wp_query->set()?

Non puoi semplicemente usare:

<?php
$my_custom_query_args = array(
    'posts_per_page' => $myvar
);
$my_custom_query = new WP_Query( $my_custom_query_args );
?>
26 set 2011 21:43:18
Commenti

Non stai distruggendo tutti gli altri argomenti della query in quel modo? Il metodo ->set() dovrebbe mantenere invariati gli altri argomenti, modificando solo post_per_page. O sto interpretando male?

Sean Kendle Sean Kendle
13 set 2021 19:36:08
1
-1

Puoi utilizzare

$wp_query->query_vars['posts_per_page'] = 25
27 giu 2016 13:50:56
Commenti

Ciao! Potresti essere un po' più dettagliato nelle tue risposte e spiegare anche la parte del perché questa risposta è utile? Altrimenti le risposte vengono automaticamente contrassegnate come a bassa qualità dal bot della community. Grazie. Suggerimento: Dovrai almeno racchiudere la tua chiamata in una funzione di callback collegata a un filtro :)

kaiser kaiser
27 giu 2016 14:35:27