【问题标题】:Can post_nav_link navigation work with WordPress custom page templates?post_nav_link 导航可以与 WordPress 自定义页面模板一起使用吗?
【发布时间】:2012-04-12 09:50:02
【问题描述】:

我正在使用自定义页面模板在我想要销售的 WordPress 主题中构建不同的博客布局。除了 post_nav_link 导航(上一篇 | 下一篇)外,一切都运行良好。 wordpress codex 说 post_nav_links 不适用于自定义页面模板,但我真的不想重新开始。我可以做些什么来使 post_nav_link 导航与自定义页面模板一起工作?

法典参考:http://codex.wordpress.org/Next_and_Previous_Links

【问题讨论】:

  • 它们是页面还是帖子?您是否尝试过法典底部的建议?
  • 如果我是正确的下一个和上一个不要在页面上工作,而只能在帖子上工作。根据您要导航的内容?
  • @ChristianVarga 是的,我已经尝试了页面底部的解决方案,但它随后将我的博客文章导航变成了逐页导航。例如,我将单击下一页,它会将我带到我的联系页面,而不是博客文章的下一页。
  • @janw 我已将我的自定义博客页面模板设置为每页仅显示 3 个帖子。我想实现分页,以便用户可以导航到包含旧帖子和新帖子的页面。
  • 啊,我明白了。我会在今天晚些时候回复你。

标签: wordpress blogs


【解决方案1】:

试试这个,它适用于我的自定义模板,您可能需要将 args 添加到 query_posts 但关键是偏移量。

$paged = get_query_var('paged');

$offset = 0;
if ($paged != 0 ) {
    //$paged -1 because there is no page 1, just 0 and 2 And page 0 is skipped
    $offset = ($paged-1) * get_query_var('posts_per_page') ;
}
query_posts('offset=' . $offset);
if (have_posts()) : while (have_posts()) : the_post();
       // the loop

对于分页:

<div id="pagination">
    <div id="pagination-previous"><?php previous_posts_link('previous'); ?></div>
    <div id="pagination-next"><?php next_posts_link('next'); ?></div>
</div>

【讨论】:

  • 是的!做到了!非常感谢@janw!
  • 很抱歉又用这个惹恼了你,但我想我在这个问题上开枪了。您的方法适用于我的 home.php 文件,但是当我通过将 " 代码行添加到文件顶部并将其设置为页面的自定义模板,分页无法正常工作。
  • 看看这个问题和我的回答:stackoverflow.com/questions/10121230/…
  • 包含您的代码的帖子模板有效,但是只有当我从 Wordpress 中的“设置”>“阅读”面板将带有帖子模板的页面设置为静态首页时,分页才能正常工作。我必须这样做,以便在激活响应式移动导航容器时显示页面
  • 这个问题仍然存在。我很确定这与这里提出的问题有关:wordpress.org/support/topic/… 和这里:core.trac.wordpress.org/ticket/13471 我已经测试了两种来源的解决方案,但我无法让它们中的任何一个起作用。请帮忙!
【解决方案2】:

谢谢@janw,我会在早上试试这个。在我这样做之前,您能否与我确认这是否是 PHP 标记第一批代码的正确方法?

        <?php query_posts("posts_per_page=3"); ?> <!-- Do I keep this line? -->
        <?php $paged = get_query_var('paged'); ?>
        <?php $offset = 0;
        if ($paged != 0 ) {
            //$paged -1 because there is no page 1, just 0 and 2 And page 0 is skipped
            $offset = ($paged-1) * get_query_var('posts_per_page') ;
        } ?>
        <?php query_posts('offset=' . $offset); ?>
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

【讨论】:

  • 嗨,詹姆斯跳过第一行没关系,但这很丑。也不要关闭和打开&lt;?php,?&gt;,如果它们之间没有HTML,它只是丑陋而且(有点)慢。另外,如果我的答案是正确的,请接受我的答案。
猜你喜欢
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多