A while ago a client wanted to display the latest post per category on the WordPress blog page. The goal was to respect sticky posts and therefore exclude the category used by the latest sticky post. WordPress offers the
pre_get_posts action hook to alter the
WP_Query instance before it runs the query on the database.
Check out the Gist with the code snippet and alter it according to your use case. Add the code to your
functions.php file, make sure to use a child theme to ensure the code doesn’t get overwritten by theme updates.
Let me know how you used
pre_get_posts to alter queries in your WordPress projects.