Cambiare il numero di articoli per pagina

11 ott 2011, 05:13:34
Visualizzazioni: 43.8K
Voti: 20

In WordPress Impostazioni => Lettura => Le pagine del blog mostrano al massimo [campo input] articoli

Al momento ho impostato 3 articoli per pagina.

Nella mia homepage, negli archivi per data, nei tag, nelle categorie, nei risultati di ricerca, ecc... Tutte le pagine che utilizzano il loop e la paginazione mostrano ora 3 articoli per pagina.

Il mio obiettivo è poter avere un numero diverso di risultati per pagine diverse. Nella mia homepage potrei avere 3 articoli, ma nei risultati di ricerca o negli archivi, mostrare un numero diverso di risultati per pagina.

Qualche idea su come realizzarlo?

0
Tutte le risposte alla domanda 3
4
30

Questo farà al caso tuo: (aggiungi al file functions.php del tuo tema)

add_action( 'pre_get_posts',  'set_posts_per_page'  );
function set_posts_per_page( $query ) {

  global $wp_the_query;

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( 'posts_per_page', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( 'posts_per_page', 5 );
  }
  // Ecc..

  return $query;
}
11 ott 2011 06:19:40
Commenti

set è un metodo di $query?

Rutwick Gangurde Rutwick Gangurde
11 ott 2011 07:34:46

@RutwickGangurde Sì. In effetti, anche is_search() e is_archive() lo sono, il che ora è un po' più chiaro dopo aver aggiornato la mia risposta con le informazioni tratte da questo ottimo post: http://www.billerickson.net/customize-the-wordpress-query/ L'articolo nota anche che avremo il metodo $wp_query->is_main_query() in WP3.3, il che è piuttosto interessante.

Dave Romsey Dave Romsey
11 ott 2011 08:10:57

Fantastico amico! Grazie mille per il post fantastico. Non conoscevo questi metodi e sono solito scavare nell'oggetto / array per modificare / impostare valori. Ottimo per hack rapidi! +1 per te!

Rutwick Gangurde Rutwick Gangurde
11 ott 2011 08:20:54

Da quando è diventato necessario non modificarlo mai se è l'amministrazione dashboard? Sembra che non sincronizzi il "Numero di elementi per pagina:" nelle opzioni dello schermo in WP, il che potrebbe portare a pagine a cui non è possibile accedere.

NoBugs NoBugs
19 gen 2016 01:03:55
1

Migliorando la risposta precedente: l'hook pre_get_posts viene recuperato per riferimento, quindi non richiede una chiamata global o un return.

add_action( 'pre_get_posts',  'set_posts_per_page'  );
function set_posts_per_page( $query ) {

  if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
    $query->set( 'posts_per_page', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_archive() ) ) {
    $query->set( 'posts_per_page', 5 );
  }
  // Ecc..

}
10 ott 2018 13:01:44
Commenti

C'è un problema anche con il tuo codice perché utilizzare la variabile globale $wp_query può portare a uno spreco di memoria, ma non puoi chiamare la variabile non definita $wp_the_query

Abdulkabir Ojulari Abdulkabir Ojulari
16 set 2019 23:28:19
0

Utilizzo di $GLOBALS['wp_query'] o semplicemente $wp_query

add_action( 'pre_get_posts',  'set_posts_per_page'  );
function set_posts_per_page( $query ) {

  if ( ( ! is_admin() ) && ( $query === $GLOBALS['wp_query'] ) && ( $query->is_search() ) ) {
    $query->set( 'posts_per_page', 3 );
  }
  elseif ( ( ! is_admin() ) && ( $query === $GLOBALS['wp_the_query'] ) && ( $query->is_archive() ) ) {
    $query->set( 'posts_per_page', 5 );
  }

  return $query;
}
16 set 2019 23:29:20