web-dev-qa-db-fra.com

Articles par page sur un modèle de taxonomie personnalisé

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?

1
user998163

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' );
    }
});
2
Pieter Goosen