无法获取上一篇和下一篇帖子的永久链接

时间:2014-02-08 作者:jeremybarbet

我试图获取下一个和上一个URL,并创建一个导航。但它似乎只从前两篇帖子中检索到permalink(而不是最近的其他帖子)。

我有5个帖子(ID=25、86、80、75、45)。当我在第一篇文章(ID=25)上单击上一篇文章时,我将发布ID=45的文章,当我单击上一篇文章后,它将保持在同一页上。

<?php 
  if (have_posts()) : while (have_posts()) : the_post();

  $prev = get_permalink(get_adjacent_post(false,\'\',false));
  $next = get_permalink(get_adjacent_post(false,\'\',true)); ?>

  <li class="post-link">
    <a class="prev" href="<?php echo $prev; ?>">
      <span class="icon-prev"></span>
    </a>
  </li>

  <li class="post-link">
    <a class="next" href="<?php echo $next; ?>">
      <span class="icon-next"></span>
    </a>
  </li>

<?php endwhile; endif; get_footer(); ?>
我还尝试将代码放在while循环之后。

Update我解决了这个问题。当我发布我的帖子时,它们的日期都是一样的,所以它只显示了这个日期之后的一篇帖子。我换了一个不同的日期,这很有效!我的错。

2 个回复
SO网友:Brad Dalton

您可以使用不同的代码。例如,我在其他主题上测试的214父主题的修改代码运行良好。

将其添加到名为template tags的新文件中。php

<?php

if ( ! function_exists( \'wpsites_post_nav\' ) ) :

function wpsites_post_nav() {

$previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, \'\', true );
$next     = get_adjacent_post( false, \'\', false );

if ( ! $next && ! $previous ) {
    return;
}

?>
<nav class="navigation post-navigation" role="navigation">
    <div class="nav-links">
        <?php
            previous_post_link( \'%link\', __( \'<span class="meta-nav">Previous Post</span>%title\', \'wpsites\' ) );
            next_post_link( \'%link\', __( \'<span class="meta-nav">Next Post</span>%title\', \'wpsites\' ) );
        ?>
    </div><!-- .nav-links -->
</nav><!-- .navigation -->
<?php
}
endif;
创建一个模板标记,可以在自定义函数中使用,也可以直接在单个函数中使用。php文件:

Child themes functions.php file

require_once( get_stylesheet_directory() . \'/template-tags.php\' );

Alternatively - Parent themes functions.php file

require get_template_directory() . \'/template-tags.php\' ;

Single.php template tag

<?php wpsites_post_nav(); ?>

结束

相关推荐

Several loop in search result

我想在搜索后的结果中使用两个循环。首先,如果有结果,我开始循环<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> 并在循环后显示属于某个类别的文章<?php $cats = get_categories(); foreach ($cats as $cat) { query_posts(\'cat=\'.$cat-&g