这是一种更聪明的方式来使用 php next/previous_post


This there a smarter way to use php next/previous_post?

我的博客上有一个"下一个/上一个"按钮,当您开始从主页查看并向后(按顺序通过帖子后退或前进)时,该按钮效果很好。我使用这个:

<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>

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

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

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

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

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

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

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

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

请注意,这两个函数都已弃用。它们已被 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'); ?>