posts_nav_link on single.php

时间:2011-09-07 作者:Yasp0

情况。。。我使用3个类别。其中一个叫做“新闻”。此页面左侧显示“新闻”类别中的最新帖子,左侧显示同一类别中的10篇最新帖子。还有默认导航。。。«上一页-下一页»。

“新闻”类别中的单个帖子看起来与“新闻”页面相同。左边是帖子,右边是最近的10篇帖子。还有导航。。。

这就是问题所在。导航按钮链接到:

../news/single-post-title/page/2/
其应链接到:

../news/page/2/
无论如何要解决这个问题?如何将下一页/上一页链接添加到单个页面。php?

1 个回复
SO网友:Chip Bennett

简单的回答是:

你不能使用你正在使用的功能来做你想做的事情。

答案很长:

posts_nav_link() 模板标记不会在单个博客帖子上返回任何输出。它调用get_posts_nav_link(), 这是defined in source as follows:

function get_posts_nav_link( $args = array() ) {
        global $wp_query;

        $return = \'\';

        if ( !is_singular() ) {
                $defaults = array(
                        \'sep\' => \' — \',
                        \'prelabel\' => __(\'« Previous Page\'),
                        \'nxtlabel\' => __(\'Next Page »\'),
                );
                $args = wp_parse_args( $args, $defaults );

                $max_num_pages = $wp_query->max_num_pages;
                $paged = get_query_var(\'paged\');

                //only have sep if there\'s both prev and next results
                if ($paged < 2 || $paged >= $max_num_pages) {
                        $args[\'sep\'] = \'\';
                }

                if ( $max_num_pages > 1 ) {
                        $return = get_previous_posts_link($args[\'prelabel\']);
                        $return .= preg_replace(\'/&([^#])(?![a-z]{1,8};)/i\', \'&#038;$1\', $args[\'sep\']);
                        $return .= get_next_posts_link($args[\'nxtlabel\']);
                }
        }
        return $return;

}
重要条件:

if ( !is_singular() )
Theis_singular() 当当前页面是单个博客文章、静态页面或附件页面时,conditional返回true。由于您只发表了一篇博客文章,因此该函数只返回一个空字符串。

结束