在WordPress帖子导航中包含预定(未来)帖子(previous_post_link,next_post_link)

时间:2015-02-19 09:28:59

标签: php wordpress wordpress-theming

这可能吗?如何更改相邻帖子的查询并添加' post_status = future'显示已安排的帖子的下一个和上一个帖子?

我想我应该使用某种过滤器,但有人可以告诉我怎么样? :)

2 个答案:

答案 0 :(得分:0)

previous_post_link使用adjacent_post_link,后者又使用get_adjacent_post,其中包含名为get_{$adjacent}_post_where的SQL查询字符串过滤器。使用$adjacent替换previousnext的此过滤器,您可以使链接生成器以下列方式搜索status = publish以外的帖子:

add_filter( 'get_previous_post_where', function( $query_string ) {

    $new_status_query_string_repl = "(p.post_status = 'publish' OR p.post_status = 'future')";

    $new_query = preg_replace( "/p\.post_status = 'publish'/", $new_status_query_string_repl, $query_string );

    return $new_query;

});
注意:没试过这个,可能需要调整。但是钩子就在那里,并且应该更改查询字符串以在相邻的帖子查询中包含future个帖子。

答案 1 :(得分:0)

感谢David Gard找到了完美的解决方案。

add_filter('get_previous_post_where', 'my_add_future_posts_to_nav', 3, 99);
add_filter('get_next_post_where', 'my_add_future_posts_to_nav', 3, 99);
function my_add_future_posts_to_nav($where, $in_same_term, $excluded_terms){

return str_replace("p.post_status = 'publish'", "p.post_status IN ('publish', 'future')", $where);

}