You could use some hook like template_redirect
to remove the top element from the global $posts array using array_shift
like gok suggests (somewhat, he didn't really say how to do it). In that case it would look like this
add_action( 'template_redirect', function() {
global $posts;
array_shift( $posts );
});
But I think a more elegant approach would be this
add_action( 'loop_start', function( $args ) {
$args[0]->next_post();
});
If you put this in functions.php, at the beginning of the Wordpress loop, it will automatically go to the next post which means it will skip the first post always.
If you want to do this only on certain pages, use the relevant template tag like is_home()
inside the function. if ( is_home() ) $args[0]->next_post();
.
If you are not using PHP version >= 5.3 you will have to give the function a name, since lower versions of PHP do not support anonymous functions.