Quick note about the difference between the two WP_Query parameters! The key (ignore_sticky_posts) is a bit confusingly named because to me (and many people on Stack Overflow) it seems to suggest that WP_Query will filter out sticky posts with
'ignore_sticky_posts' => 1. However, this just means that sticky posts will not be sorted (stickied) to the top – they will still appear in the results. To remove the sticky posts, do the following:
$non_sticky_posts = new WP_Query( array( 'post__not_in' => get_option( 'sticky-posts' ) ) );
Don’t bother adding the
ignore_sticky_posts attribute since it only changes the sort order of posts that were filtered out anyway.