web-dev-qa-db-fra.com

Comment faire ma boucle de pagination en continu?

J'ai donc créé une pagination personnalisée pour mon modèle single.php afin d'afficher les publications suivantes/précédentes en bas. Cependant, la façon dont il fonctionne actuellement est linéaire (c'est-à-dire que sur le post le plus récent, il n'y a qu'un lien "post suivant" et que sur le post le plus ancien, il n'y a qu'un lien "précédent").

Ce que je voudrais faire est de rendre la boucle continue, de sorte que sur le premier post, le lien "next post" sera vers le deuxième post le plus récent et le lien "post précédent" sera le post le plus ancien.

Voici mon code de pagination:

<?php 
    $nextPost = get_next_post();
    if($nextPost) {
        $nextPostID = $nextPost->ID;
?>
    <a class="prev-post" href="<?php echo get_permalink( $nextPostID ); ?>">
        <?php pagination_next($nextPostID); ?>
    </a>
<?php } ?>

<?php 
    $prevPost = get_previous_post();
    if($prevPost) {
        $prevPostID = $prevPost->ID;
?>
    <a class="next-post" href="<?php echo get_permalink( $prevPostID ); ?>">
        <?php pagination_prev($prevPostID); ?>
    </a>
<?php } ?>
1
user13286

Vous pouvez ajouter un autre élément aux deux ifs et obtenir le premier/dernier message:

<?php 
     $nextPost = get_next_post();
    if($nextPost) {
        $nextPostID = $nextPost->ID;
?>
    <a class="prev-post" href="<?php echo get_permalink( $nextPostID ); ?>">
        <?php echo $nextPost->post_title; ?>
    </a>
<?php } else {
        $first_post = get_posts( array(
            'posts_per_page'   => 1,
            'order' => 'ASC'
        ) );
        ?>
        <a class="prev-post" href="<?php echo get_permalink( $first_post[0]->ID ); ?>">
            <?php echo get_the_title( $first_post[0]->ID ); ?>
        </a>

<?php } ?>

<?php
    $prevPost = get_previous_post();
    if($prevPost) {
        $prevPostID = $prevPost->ID;
?>
    <a class="next-post" href="<?php echo get_permalink( $prevPostID ); ?>">
        <?php echo $prevPost->post_title; ?>
    </a>
<?php } else {
    $latest_post = get_posts( array(
        'posts_per_page'   => 1,
        'order' => 'DESC'
    ) );
    ?>
    <a class="next-post" href="<?php echo get_permalink( $latest_post[0]->ID ); ?>">
        <?php echo get_the_title( $latest_post[0]->ID ); ?>
    </a>
<?php } ?>

J'imagine que vous ne voulez utiliser cela que pour les publications, alors sur get_posts, je laisse le type de publication par défaut en tant que publication.

2
dbeja