Visualizzare un diverso numero di post in certe aree

Come sappiamo, dalle preferenze di WordPress impostiamo il numero predefinito di post da visualizzare in home, in una pagina archivio, nei risultati di una ricerca e così via. Ma può capitare di avere la necessità di visualizzarne un numero diverso in alcuni template. Ad esempio, è certamente utile per il lettore visualizzare nei risultati di una ricerca un numero più elevato di post, magari anche senza il contenuto o solo con una breve introduzione.

Apportare questa modifica al proprio blog è abbastanza semplice se si utilizza un filtro. Ci sono almeno due modi per farlo: in questo post vi mostro quello che uso io.

Nel file functions.php incollare questa nuova funzione:

1function ubn_posts_per_page() {
2  global $wp_query;
3  if ( is_archive() || is_search() ) {
4    $wp_query->query_vars['posts_per_page'] = 25;
5  }
6}
7add_filter( 'pre_get_posts', 'ubn_posts_per_page' );

Il valore da personalizzare, ovviamente, è quel 25. Potete anche aggiungere altre condizioni nella riga 3. In questo blog, ad esempio, la riga si presenta precisamente così:

3if (is_search() || is_archive() || is_page('featured')) {
4  ...
5}

Per quanto riguarda il lato tecnico, la funzione viene eseguita proprio prima di ricevere i post e altera, mediante un filtro, il valore ricavato dalle preferenze memorizzate nel database, cambiandolo con quello inserito qui. Semplice ed efficace.