Come impostare i post per pagina usando WP_Query()
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?

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);

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
.

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 :)
