Get post and all posts after it by ID?

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.

Read More

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.

Related posts

Leave a Reply

2 comments

  1. 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');
    
  2. 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?