php - 根据当前查询变量在 Wordpress 中预过滤 get_next_post()

标签 php mysql wordpress custom-post-type

我有一个自定义帖子类型,我正在使用自定义分类法。这些分类法用于过滤和创建帖子索引列表。

问题是,一旦我从过滤列表中单击其中一个帖子,我就会在页面上看到上一篇和下一篇帖子链接;我希望这些链接尊重之前添加的过滤器。

有没有办法提取“下一个匹配的帖子”,而不仅仅是下一个相同自定义类型的帖子?好像内置了一个过滤变量选项,但是我好像找不到。

做这样的事情会很好:

$filter = array("foo"=>"bar","category"=>"something");
$next_post = get_next_post($filter);

显然,这与 Wordpress API 不兼容,但唯一类似的选项是“in_same_cat”,这绝对不够。

在伪 SQL 中的基本查询类似于:

SELECT * from wp_posts where (insert custom arguments here)
   AND ID<(current post id)
   AND LIMIT=1
   AND ORDER_BY=ID
   AND ORDER=DESC

最佳答案

如果我没看错,您想从单个模板更改将出现在“下一篇/上一篇文章”中的文章。 据我所知,它使用 post_nav_link 函数 ( http://codex.wordpress.org/Function_Reference/posts_nav_link )。 有两种方法可以改变这种行为:

  1. 函数参数:如您在该链接和 http://core.trac.wordpress.org/browser/tags/3.6.1/wp-includes/link-template.php#L1636 中所见,您可以尝试使用参数来确保您想要的行为。

但是……

  1. 使用过滤器:您可能需要使用过滤器 get_pagenum_link。使用此过滤器,您将能够返回要显示的帖子的 ID。因此,只需使用 $wp_query 或 $post 全局变量并帮助自己。

如果您需要帮助,尽管提出来,我很乐意提供帮助。

关于php - 根据当前查询变量在 Wordpress 中预过滤 get_next_post(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17374127/

相关文章:

mysql - SQLITE 查询基于列的值检索列名

html - 如何在我的 wordpress 网站上为一行创建倾斜分隔线?

PHP 数组不显示

php - Laravelcollective/html 在 Laravel 5.5 中不工作

php - 使用 post 和/或 get 在页面上提交帖子并在另一个页面上查看。类似于博客

php - 使用 PHP 套接字模块检测对等断开连接 (EOF)

php - 动态下拉列表中的默认选择

mysql - 对 MySQL 使用 UTF-8

html - 如何在wordpress主题中注册html页面的CSS

javascript - 全选复选框的脚本在 WordPress 页面上不起作用