基于当前查询变量对Wordpress中的get_next_post()进行预过滤

时间:2013-06-28 21:42:55

标签: 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

1 个答案:

答案 0 :(得分:0)

如果我做对了,您想要更改单个模板中“下一个/上一个帖子”中显示的帖子。 据我所知,它使用 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中看到的那样,您可以尝试使用这些参数来确保您想要的行为。
  2. 但是...

    1. 使用过滤器:您可能需要使用过滤器 get_pagenum_link 。使用此过滤器,您将能够返回要显示的帖子的ID。所以只需使用$ wp_query或$ post全局并帮助自己。
    2. 如果您需要帮助,请提出问题,我很乐意提供帮助。