This should do: // Get sticky posts $sticky = get_option('sticky_posts'); rsort($sticky); $sticky = array_slice($sticky, 0, 3); // Check if current post is inside foreach ($sticky as $key => $value) if ($value === $GLOBALS['post']->ID) // ... and remove unset($sticky[$key]); $query = new WP_Query( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1, ) ); **// EDIT** If you want to have 3 posts (no matter what), you have to do it like so (minimally changed): // Get sticky posts $sticky = get_option('sticky_posts'); rsort($sticky); // Check if current post is inside foreach ($sticky as $key => $value) if ($value === $GLOBALS['post']->ID) // ... and remove unset($sticky[$key]); $sticky = array_slice($sticky, 0, 3); $query = new WP_Query( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1, ) );