[wp-hackers] Pull Latest Post from Each of 6 Categories

Mike Schinkel mikeschinkel at newclarity.net
Tue May 5 08:21:31 GMT 2009

"Peter Westwood" <peter.westwood at ftwr.co.uk> wrote:
> The reason we recommend avoiding direct SQL is to reduce the 
> worry of  forward-compatibility for your theme or plugin.

With respect, I do understand your reasons and do believe that 95% of the time it is probably the right approach. But as with any guidelines there are times when it makes sense to bypass them, and that was my point.

> Keep an option in the db which contains an array 
> containing the six post ids you want to display 
> and update this option when a new post is written 
> in one of the categories.
> Then you can as far as I remember do a single 
> WP_Query loop with the post_ids specified using 
> 'post__in' and keep to always using the API.
> This moves any heavy code to the backend where 
> it will run when required.

IF the query to find the most recent posts in each category is moved to a scheduled task or done on post update then I agree that would probably be one of the best solutions discussed albeit does require understanding how to implement the hooks which can be less than trivial (though not terribly hard.) 

> Calling a hefty SQL query with subqueries or hairy JOINs 
> is no going to be performant.

Point of note, with the proper indexes the overhead of most subqueries and multi-join queries is minimal, especially as compared to 6 standard queries. Put another way, doing something in SQL will (almost) ALWAYS be much faster than doing it in PHP.

-Mike Schinkel
Custom Wordpress Plugins

More information about the wp-hackers mailing list