Je souhaite pouvoir modifier la quantité de messages affichée sur chaque page d'archives, par catégorie. Est-ce que je peux changer quelque chose dans le code de la boucle ou dans un plugin qui me donne cette possibilité?
Merci à la communauté SE.
collez ceci dans votre fichier function.php de thème
add_filter('pre_get_posts', 'Per_category_basis');
function Per_category_basis($query){
if ($query->is_category) {
// category named 'books' show 12 posts
if (is_category('books'){
$query->set('posts_per_page', 12);
}
// category With ID = 32 show only 5 posts
if (is_category('32'){
$query->set('posts_per_page', 5);
}
}
return $query;
}
explication: nous vérifions d’abord si c’est une catégorie parce que nous ne voulons rien changer d’autre. si tel est le cas, nous vérifions et modifions le nombre de publications à afficher. Pour la première, nous vérifions le nom de la catégorie 'livres' et attribuons la valeur de 12 posts_per_page. le second correspond à l'ID de la catégorie '32' et attribuons la valeur. de 5 posts_per_page juste pour vous montrer que vous pouvez utiliser l’un ou l’autre. et vous pouvez simplement ajouter autant de contrôles et de devoirs.
La solution de Bainternet n'a pas fonctionné dans mon cas, même si cela m'a aidé à comprendre comment le faire correctement.
La solution consiste à prendre le paramètre par référence, car sinon, il ne fera que copier l’objet de la requête.
add_action('pre_get_posts', 'custom_per_page');
function custom_per_page(&$query) {
if (is_post_type_archive('custom_post_type_name')) {
$query->set('posts_per_page', 4);
}
return;
}