meta_query keys and sticky posts
get_posts() is a rather generic wrapper for retrieving set of posts and just that. As such it purposely unmakes some of the arguments typical for loops. Specifically it ignore stickies: $r[‘ignore_sticky_posts’] = true; So if you want more loop-like behavior you should be using instance of WP_Query object instead.