这是一个更聪明的方式来使用php下一个/上一个_后?

6yt4nkrj  于 2023-06-21  发布在  PHP
关注(0)|答案(2)|浏览(92)

我的博客上有一个Next/Previous按钮,当你从主页开始查看并向后查看时(为了通过帖子向后或向前),它工作得很好。我用这个:

<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(查看我发布的帖子的顺序),那么下一个/上一个按钮正常工作,但如果用户通过类别浏览,下一个和上一个按钮将知道这一点,并通过这些帖子的其余部分带用户?

tsm1rwdh

tsm1rwdh1#

如果用户来自首页,您可能只需要在URL后附加一个参数。所以你有:
http://path.to/blog/article/url/?fromhome=true
并且可以在调用previous_post方法时检查它。如果设置了它,你可以修改它的参数,使它显示所有的文章,否则你将只显示来自同一类别的文章。(不要忘记将fromhome参数传递给下一篇/上一篇文章链接!)
编辑:您可以使用post_link过滤器来修改permalink/next_post方法中的链接。

tv6aics1

tv6aics12#

不幸的是,除非你在category.php中设置了cookie,否则没有内置的方法来区分用户是否通过类别存档的方式查看了帖子。如果你想看看这样做 checkout 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'); ?>

相关问题