Single.php页面中无限的下一个/上一个帖子

时间:2021-08-25 作者:GGQa

我有一个关于这个代码的问题。当最后一个条目出现在“then”中时;“下一步”;我总是显示同一页。此外,我想添加下一篇文章的缩略图和标题。有可能吗?

<?php
    if( get_adjacent_post(false, \'\', true) ) {
            previous_post_link(\'%link\' , \'%title\', \'&larr; \');
        } else {
            $first = new WP_Query(\'cat=3&posts_per_page=1&order=DESC\'); $first->the_post();
             echo \'<a href="\' . get_permalink() . \'">&larr;</a>\';
             echo (\'%title\');
            wp_reset_query();
        };

        if( get_adjacent_post(false, \'\', false) ) {

        } else {
            $last = new WP_Query(\'cat=3&posts_per_page=1&order=ASC\'); $last->the_post();
                echo \'<a href="\' . get_permalink() . \'">Next Post &rarr;</a>\';
            wp_reset_query();
        };

    ?>
先生们,女士们,请帮忙

1 个回复
最合适的回答,由SO网友:Martin Mirchev 整理而成

我认为这是一种更好、更干净的方法,可以实现你想要实现的目标。

// get_adjacent_post will return $post object
$prev_post = get_adjacent_post(true,\'\',true);
//Using get_the_post_thumbnail() to get featured image of previous post
$prev_thumbnail = get_the_post_thumbnail( $prev_post->ID, array( 100, 100));

$next_post = get_adjacent_post(true,\'\',false);
//Using get_the_post_thumbnail() to get featured image of next post
$next_thumbnail = get_the_post_thumbnail( $next_post->ID, array( 100, 100));

the_post_navigation(
    array(
        \'in_same_term\' => true,
        \'next_text\' => \'<p class="meta-nav">\'. $next_thumbnail .\'Next Post &rarr;</p><p class="post-title">%title</p>\',
        \'prev_text\' => \'<p class="meta-nav">\'. $prev_thumbnail .\'&larr; Previous Post</p><p class="post-title">%title</p>\',
    )
);
好的,上述解决方案将需要额外的next\\u post\\u link筛选器和prev\\u post\\u link筛选器,并覆盖\\u post\\u导航模板,这不是一个真正好的解决方案。因此,根据您的代码,尝试一下这个。我已经测试了同一类别的3篇帖子,其循环没有问题。

$prev_post = get_adjacent_post(true,\'\',true);
if($prev_post):
    $prev_post_id = $prev_post->ID;
    $prev_thumbnail = get_the_post_thumbnail($prev_post_id, array( 100, 100));
else:
    $abjacent_categories = get_the_category(); 
    $ids = array();
    foreach($abjacent_categories as $category) {
        $ids[] = $category->term_id;
    }
    $last = new WP_Query( array( 
        \'post_type\' => \'post\',
        \'posts_per_page\' => 1, 
        \'orderby\'         => \'post_date\',
        \'order\'           => \'DESC\',
        \'category__in\' => $ids, 
/* use category__and if you want post to be in all categories as current post. 
For now its happy with one of current post categories. 
Depending on this will give different results at the end so keep that in mind. */
     ) ); 
    $last->the_post(); 
    $prev_post_id = get_the_ID();
    $prev_thumbnail = get_the_post_thumbnail( $prev_post_id, array( 100, 100));
wp_reset_query();
endif;

$next_post = get_adjacent_post(true,\'\',false);
if($next_post):
    $next_post_id = $next_post->ID;
    $next_thumbnail = get_the_post_thumbnail($next_post_id, array( 100, 100));
else:
    $abjacent_categories = get_the_category(); 
    $ids = array();
    foreach($abjacent_categories as $category) {
        $ids[] = $category->term_id;
    }
    $first = new WP_Query( array( 
        \'post_type\' => \'post\',
        \'posts_per_page\' => 1, 
        \'orderby\'         => \'post_date\',
        \'order\'           => \'ASC\',
        \'category__in\' => $ids,     
/* use category__and if you want post to be in all categories as current post. 
For now its happy with one of current post categories. 
Depending on this will give different results at the end so keep that in mind. */
     ) ); 
    $first->the_post(); 
    $next_post_id = get_the_ID();
    $next_thumbnail = get_the_post_thumbnail( $next_post_id, array( 100, 100));
wp_reset_query();
endif;
对于html,可以使用以下模板进行测试

<div class="nav-links">
    <div class="nav-previous">
        <a href="<?php echo get_the_permalink($prev_post_id); ?>" rel="prev">
            <p class="meta-nav"><?php echo $prev_thumbnail ?> &larr; Previous Post</p><p class="post-title"><?php echo get_the_title($prev_post_id); ?></p>
        </a>
    </div>
    <div class="nav-next">
        <a href="<?php echo get_the_permalink($next_post_id); ?>" rel="next">
            <p class="meta-nav"><?php echo $next_thumbnail ?> Next Post &rarr;</p><p class="post-title"><?php echo get_the_title($next_post_id); ?></p>
        </a>
    </div>
</div>

相关推荐

Unctions.php中的多个AJAX处理程序函数冲突

我有两个不同的AJAX 在我的网站中加载更多功能。一个用于我的归档页面,第二个用于分类页面。问题是,当两者都AJAX 处理程序函数位于“我的函数”中。php。当只有一个处理程序函数时,后者可以正常工作。两种AJAX操作的JS代码:/* * AJAX Load More for archive page */ $(\'.load-more-archive\').click(function(){ var button = $(this), data