J'aimerais afficher 20 articles sur mon modèle de taxe personnalisé, en utilisant ce filtre:
function customize_customtaxonomy_archive_display ( $query ) {
if ( ( $query->is_main_query()) && ( is_tax() ) ){
$query->set( 'posts_per_page', '20' );
$query->set( 'number_posts', '20' );
$query->set( 'orderby', 'Rand' );
return;
}
}
//Hook the function
add_action( 'pre_get_posts', 'customize_customtaxonomy_archive_display' );
Si je le règle sur 2
, deux publications sont affichées. Si je le règle sur 20
, les messages 12
sont affichés. Il n'y a jamais plus de 12 messages affichés, bien que 34 soient publiés.
Quel pourrait être le problème?
number_posts
n'est pas un paramètre valide dans pre_get_posts
, vous devriez utiliser posts_per_page
Vous devez également inclure une coche (!is_admin()
) dans votre requête pour vérifier si vous êtes au début ou à la fin du processus, car pre_get_posts
modifie également les requêtes finales.
Réécrivez votre code comme suit:
add_action( 'pre_get_posts', function ( $query )
{
if ( !is_admin()
&& $query->is_main_query()
&& $query->is_tax()
) {
$query->set( 'posts_per_page', '20' );
$query->set( 'orderby', 'Rand' );
}
});