Tell me more ×
WordPress Answers is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Maybe this is super obvious and staring me in the face, but I'm stumped. Is there a way to pull and sort posts by ID? I'd like to grab an arbitrary post, and then x number of posts after it.

Specifically what I'm trying to do is a build a carousel of posts, and I'd like the first item on every individual post to be the current post, and then everything following it. I'd also like to be able to scroll the carousel backwards. I'm using the JSON API plugin to make AJAX calls to pull the posts.

Basically I just want to add a "WHERE post.id >= currentPost" to the query, but I can't figure out where to implement this. I tried using the posts_where hook but I always get zero results.

share|improve this question

2 Answers

I think you're on the right path with posts_where, something like this should work:

<?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');
share|improve this answer

Straightforward sorting by ID would be unreliable. Simply put IDs are not guaranteed to be sequential (even if they commonly are). One case would be import with custom IDs for example.

I suggest to look into get_adjacent_post() function. It only retrieves one post by default, but it has extensive hooks for its SQL query and LIMIT 1 seems easy to override by filtering get_{$adjacent}_post_sort hook.

However I am not sure how/if that can be implemented with JSON API specifics.

PS do you really need to do this asynchronously via Ajax? Maybe setting up JS variables with data in page source would work better?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.