Pagination de type de message personnalisé WordPress
De manière générale, chaque fois que je travaille avec une pagination de type de publication personnalisée, cela se fait en écrivant une requête personnalisée à l’aide de WP_Query, puis en appelant wp_reset_postdata() à la fin de The Loop.
Je pense toujours que cela a sa place, mais il existe une solution plus simple que vous pourrez peut-être mettre en œuvre à l’aide d’un crochet spécifique fourni par WordPress.
Plus précisément, je parle du crochet pre_get_posts. Dans la référence de code, vous pouvez voir que ceci est défini comme :
Se déclenche après la création de l’objet variable de requête, mais avant l’exécution de la requête réelle.
Et comme la requête contient beaucoup d’informations, nous pouvons continuer et l’utiliser pour déterminer si nous voulons modifier les arguments nécessaires pour gérer la pagination.
Par cela, je veux dire que nous devons examiner la propriété post_type et la valeur posts_per_page. Pour ce faire, vous pouvez l’implémenter de la manière suivante :
<?php
use WP_Query;
add_action('pre_get_posts', __NAMESPACE__. 'customPostTypePagination');
/**
* If we're on the 'acme-post-type' page, then adjusts pagination so there are only two posts per page. This will
* affect pagination so we can use built-in pagination links to easily page through the content.
*
* @param WP_Query the instance of the query object that contains information to populate the template.
*
* @return WP_Query an unmodified version of the query object or a modified version if we're on the acme post-type.
*/
function customPostTypePagination(WP_Query $query)
{
if (isset($query->query['post_type']) && 'acme-post-type' == $query->query['post_type']) {
$query->set('posts_per_page', 2);
}
}
Le code ci-dessus n’est pas orienté objet (si c’était le cas, je configurerais un abonné et une classe responsable de la gestion de la logique dans la fonction), mais vous pouvez voir comment le configurer dans sa forme la plus basique.
Donc, si vous travaillez avec une pagination de type de publication personnalisée et que vous ne souhaitez pas vous occuper des différents aspects de la configuration d’une requête personnalisée, cela peut résoudre votre problème.