I was wondering why my
posts_where filter was not being executed on my WordPress query and after a bit of poking around, I figured out that get_posts sets
suppress_filters to true, unless specified otherwise, making
WP_Query skip a bunch of SQL filters, including the
posts_where I was trying to set. So learn the easy way —
get_posts will suppress filters by default.
Hopefully this won’t be such a problem when when date_query makes it into core, since one of the most popular uses for
posts_where is better date filtering.