web-dev-qa-db-fra.com

Est-il possible de supprimer la limite posts_per_page sur un type de publication spécifique?

Je voudrais savoir si je peux supprimer la limite sur posts_per_page pour un type de message spécifique.

Dans la page archive.php, j'affiche un type de message différent, et pour le type de message "publications" spécifique, je souhaite afficher tous les messages. Comment puis-je atteindre cet objectif sans impacter le type "post" traditionnel?

3
VeeJay

Vous pouvez vous connecter à l'action pre_get_posts pour accéder à l'objet $query.

Vous devriez utiliser votre crochet d’action dans votre fichier functions.php. Un exemple de ce à quoi votre fonction pourrait ressembler:

add_action( 'pre_get_posts', 'publications_archive_query' );
function publications_archive_query( $query ) {
  if ( !is_admin() && $query->is_main_query()) {
    if ( $query->get('post_type') === 'publications' ) {
      $query->set( 'posts_per_page', 5 );
    }
}

Définissez la requête que vous modifiez à l'aide de contrôles conditionnels.

$query->get('post_type') pour obtenir une correspondance avec la requête post_type actuelle.

is_main_query pour vous assurer que vous appliquez uniquement la modification de votre requête à la requête principale.

Lisez plus loin et trouvez d'autres exemples: https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

4
FFrewin