web-dev-qa-db-fra.com

Changer les messages par nombre de pages

Dans WordPress Paramètres => Lecture => Les pages de blog affichent au plus [champ de saisie] messages

Je l'ai mis à 3 postes pour le moment.

Sur mon index, les archives de dates, les archives de balises, les archives de catégories, les résultats de recherche, etc. Toutes les pages qui utilisent la boucle et la pagination, 3 messages par page sont affichés.

Mon objectif est de pouvoir avoir un nombre différent de résultats pour différentes pages. SUR mon index peut avoir 3 articles, mais dans les résultats de recherche ou les archives, affiche un nombre différent de résultats par page.

Des idees pour faire cela?

12
JasonDavis

Cela le fera: (ajouter au functions.php de votre thème)

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 );
  }
  // Etc..

  return $query;
}
20
Dave Romsey

En améliorant la réponse ci-dessus: hook pre_get_posts est extrait par référence, il ne nécessite donc pas d'appel global ni d'appel 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 );
  }
  // Etc..

}
0
Arts Fantasy