通过ID获取帖子及其之后的所有帖子?

时间:2011-06-25 作者:TheSeanz

也许这是非常明显的,并且盯着我看,但我被难住了。有没有办法按ID对帖子进行拉取和排序?我想抓取一个任意的帖子,然后再抓取x个帖子。

具体来说,我想做的是构建一个帖子轮播系统,我希望每个帖子上的第一个项目都是当前帖子,然后是后面的所有内容。我还希望能够向后滚动旋转木马。我正在使用JSON API plugin 进行AJAX调用以获取帖子。

基本上,我只想在查询中添加一个“WHERE post.id>=currentPost”,但我不知道在哪里实现它。我尝试使用posts\\u where hook,但总是没有结果。

2 个回复
SO网友:Milo

我认为你在正确的道路上posts_where, 像这样的方法应该会奏效:

<?php
function my_filter_where($where){
    global $my_current_id;
    $where .= " AND ID >= ".$my_current_id;
    return $where;
}

// random number I chose for sake of example
$my_current_id = 30;

add_filter(\'posts_where\', \'my_filter_where\');

$my_posts = new WP_Query("posts_per_page=5&orderby=ID&order=ASC");

remove_filter(\'posts_where\', \'my_filter_where\');

SO网友:Rarst

按ID直接排序是不可靠的。简单地说,ID不能保证是连续的(即使它们通常是连续的)。例如,一种情况是使用自定义ID导入。

我建议调查一下get_adjacent_post() 作用默认情况下,它只检索一篇文章,但它的SQL查询和LIMIT 1 似乎很容易通过筛选覆盖get_{$adjacent}_post_sort

然而,我不确定如何/是否可以使用JSON API细节来实现这一点。

PS您真的需要通过Ajax异步执行此操作吗?也许用页面源中的数据设置JS变量会更好?

结束