Home » wordpress » La pagination dans les articles ou les custom post type
La pagination dans les articles ou les custom post type
La pagination dans les articles ou les custom post type
Ici on va voir comment inclure la pagination rapidement sur son site wordpress: les fonctions sont tirées des exemples pris sur le site de Kriesi et d’autres extensions..
voici la fonction à insérer dans functions.php:
function custom_pagination($numpages = '', $pagerange = '', $paged='') {
if (empty($pagerange)) { $pagerange = 2; }
global $paged; if (empty($paged)) { $paged = 1; } if ($numpages == '') { global $wp_query; $numpages = $wp_query->max_num_pages; if(!$numpages) { $numpages = 1; } }
; ?> <?php $custom_query = new WP_Query($custom_args); ?> <?php if ($custom_query->have_posts()) : ?> <?php while ($custom_query->have_posts()) : $custom_query->the_post(); ?>
Dans la même page, une fois la fonction appelée, il va falloir placer la pagination à l’endroit souhaité.Ici je le place évidemment en dehors de ma boucle.
En fonction du nombre d’articles (ou custom post) par page indiqué dans la fonction ( ‘posts_per_page’ => 2,), wordpress va automatiquement créer les pages:
Et voici la manières simplifiée.
$wp_query = new WP_Query(); $wp_query->query('showposts=6&post_type=chroniques'.'&paged='.$paged);
On inclut le paramètre paged dans les arguments de notre requête pour indiquer à wordpress qu’on souhaite enclencher le système de pagination.
Enfin, dernière étape et non des moindres, car si on ne le sait pas on peut simplement y passer la journée..voir ne jamais comprendre pourquoi ca ne marche pas.
En fait, le nombre de post à afficher dans votre requête, doit être égal ou inférieur au nombre de post indiqué dans le backoffice – onglet ‘lecture’
si dans le code on affiche un nombre plus grand que dans le backoffice, wordpress ne va pas comprendre et n’affichera donc pas de pagination.Bien faire attention à ce point!!
La fonction paginate_links()
WordPress ne cesse d’évoluer, et la fonction paginate_links() permet maintenant de créer une pagination très simplement. Voici un exemple d’implémentation,à l’intérieur d’un page archive. Le résultat, vous pouvez l’observer sur ce présent site. Je vous renvoie à cette page pour en savoir plus. Il n’y a pas besoin de créer une fonction spécifique, et dans le cas d’une boucle simple, seule la fonction paginate_links() suffit pour afficher la pagination. Il faudra bien sûr penser à styliser le tout grâce au css. La fonction peut-être appelée telle sans faire appel à la variable globlae $paged, dans les pages où on retrouve la boucle classique de wordpress (index.php, archive.php, category.php, search.php).
// Start the Loop. while ( have_posts() ) : the_post();
/* * Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part('content', get_post_format());
// End the loop. endwhile;?>
</div> <?php else : ?> <?php get_template_part('content', 'none'); ?> <?php endif; ?> <?php $big = 999999999; // need an unlikely integer echo '<nav class="custom-pagination">'; global $wp_query; $big = 999999999; // need an unlikely integer
En revanche pour les custom post types ou toute autre boucle customisée, comme pour une catégorie particulière, il faudra inclure la variable dans les paramètres de la requête.