这有更聪明的方式来使用 php next/previous_post?

Posted

技术标签:

【中文标题】这有更聪明的方式来使用 php next/previous_post?【英文标题】:This there a smarter way to use php next/previous_post? 【发布时间】:2012-07-04 18:59:48 【问题描述】:

我的博客上有一个“下一个/上一个”按钮,当您从主页开始查看并返回(以便通过帖子返回或前进)时,该按钮非常有用。我用这个:

<div><h4><span><?php next_post('% &lsaquo;&lsaquo;&lsaquo;',  'Previous', 'no', 'no'); ?></span>
 <span> <div class="right"><?php previous_post('&rsaquo;&rsaquo;&rsaquo;  %', 'Next', 'no', 'no'); ?></span>
 </h4></div>

但是,每个帖子都分为多个类别,并且每个类别都有一个菜单……这就是我遇到问题的时候。我在 single.php 中使用了上面的代码,但是当您单击其类别中的帖子并单击下一个/上一个时...它会转到在该特定帖子时发布的下一个或上一个帖子...不是类别。

是否可以执行以下操作:如果用户访问并继续正常浏览 ste(按照我发布帖子的顺序查看帖子),则下一个/上一个按钮正常工作,但如果用户通过类别浏览, 下一个和上一个按钮会知道这一点并引导用户浏览其余的帖子?

【问题讨论】:

您可能想在 WordPress Stack Exchange 上发布此内容:wordpress.stackexchange.com 我是不是搞错了论坛?我什至不知道那个地方存在。 wordpress 论坛完全被淹没了,所以我想我会在这里尝试...感谢您的提醒。 【参考方案1】:

如果用户来自首页,您可能只需将参数附加到 URL。所以你有:

http://path.to/blog/article/url/?fromhome=true

并且可以在调用 previous_post 方法时检查它。如果已设置,您可以修改其参数以显示所有帖子,否则您将仅显示同一类别的帖子。 (不要忘记将 fromhome 参数传递给下一个/上一个帖子链接!)

编辑:您可以使用 post_link 过滤器来修改 permalink/next_post 方法中的链接。

【讨论】:

天才。很好的一个 afpel,这实际上(有点)对我来说很有意义。你知道我如何应用这样的 php sourcery 吗?谢谢大佬 当我说这是有道理的时候,我的意思是我现在可以看到你提到我需要类似的东西......我是 php 新手,所以真的通过谷歌和这个论坛艰难地完成了这个过程。 投了反对票,因为如果没有一些疯狂的 ob_start() 和 str_replace() 黑客,你不能通过 next_post() 或 previous_post() 传递 $_GET 变量。 您必须尝试,但我认为您可以将其附加到永久链接:&lt;a href="&lt;?= get_the_permalink(); ?&gt;?fromhome=true 是的,next_post() 和 previous_post() 是个问题,但我相信有一个过滤器可以解决这个问题,只需要谷歌就可以了。【参考方案2】:

不幸的是,除非您在 category.php 中设置 cookie,否则没有内置方法可以区分用户是否通过类别存档查看帖子。如果你想看看这样做,请查看 php 函数setcookie()。

next_post() 和 previous_post() 都有一个名为“in_same_cat”的参数,它是您示例中两个函数的最后一个参数,您已将其设置为“否”。只需将它们设置为“是”,链接将指向同一类别中的兄弟帖子。

请注意,这两个功能都已被弃用。它们已被next_post_link() 和previous_post_link() 取代。参数略有变化,这里有一个例子:

<?php next_post('% &lsaquo;&lsaquo;&lsaquo;',  'Previous', 'no', 'yes'); ?>
<?php previous_post('&rsaquo;&rsaquo;&rsaquo;  %', 'Next', 'no', 'yes); ?>

会变成:

<?php next_post_link('% &lsaquo;&lsaquo;&lsaquo;', 'Previous', 'yes'); ?>
<?php previous_post_link('&rsaquo;&rsaquo;&rsaquo;  %', 'Next', 'yes'); ?>

【讨论】:

好东西,感谢詹姆斯提供的所有重要信息和链接。我今晚要试试这个,看看它是否有效,如果我不知道如何解决这个问题,我认为用户可能会在我的网站上迷失方向。由于它已被弃用,它们的工作方式是否相同,即只需将 next_post 替换为 next_post_link()?非常感谢您的意见,非常感谢。 另外,由于我还是一个新成员,我无法评价任何人......所以多谢了:) 很高兴能提供帮助,弗兰克 :) 我通过答案更新了一个示例,展示了如何切换到新功能。 我更改了链接,但它们只显示箭头和问号,所以现在将尝试查找(cookie?)函数放入我的 category.php。非常感谢您的帮助,我永远不会得到这个问题的答案……那是您本月所做的好事。干杯人 我读到使用cookie方法,我需要添加cookie category.php,在header.php中调用它并发布您在single.php中提供的新链接。我在第一个苦苦挣扎,我会这样称呼它吗?

以上是关于这有更聪明的方式来使用 php next/previous_post?的主要内容,如果未能解决你的问题,请参考以下文章

php Canonical,rel next,prevвnews.list

php rel next prev bx paging_params

是否有更准确的方法来使用 Sphero API 检测球对球的碰撞?

MPMoviePlayerController - 检测按下 Next/Prev 按钮

Google rel="next/prev" 用于动态分页?

为啥 jCarousel Next/Prev 按钮在添加项目后未启用