web-dev-qa-db-ja.com

ページネーションループを継続的に作成する方法

それで、私はsingle.phpテンプレートのためにいくつかのカスタムページネーションを作成して、一番下に次/前の投稿を表示します。ただし、現在の作業方法は線形です(つまり、最新の投稿には「次の投稿」リンクのみがあり、最も古い投稿には「前の」投稿リンクしかありません)。

最初の投稿では、「次の投稿」リンクが2番目に新しい投稿になり、「前の投稿」リンクが最も古い投稿になるように、ループを継続的にします。

これが私の改ページコードです。

<?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

両方のifにelseを追加して、最初の投稿/最新の投稿を取得することができます。

<?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 } ?>

私はあなたが投稿のためだけにこれが欲しいと思っているので、get_postsでは私はデフォルトの投稿タイプをpostのままにしています。

2
dbeja