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?
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;
}
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..
}