Sort Query by Post In is a very simple WordPress plug-in that allows post queries to sort the results (loop) in the order specified by the “post__in” parameter.

Updated to 1.2 on August 2, 2010.

Download version 1.2 from the official repository »

Description

Sort Query by Post In is a very light weight (about 5 lines of code!) plug-in intended for developers executing custom post queries. You’re welcome to include it in your theme and redistribute — just offer us some credit, please!

When constructing a WordPress post query in your theme template files or plug-in, WordPress offers the option to explicitly specify the posts to retrieve using the “post__in” parameter. Unfortunately, the “orderby” parameter does not offer an option that will sort the result by the exact order passed in the post__in parameter. This plug-in adds a “post__in” option for the “orderby” parameter that will order the result by the exact order specified by the the “post__in” parameter.

And don’t worry about the plug-in being deactivated – your post queries with “post__in” value used for the “orderby” will simply gracefully fall back to the default date sorting.

So what’s the use case? Well, many special themes allow the editor to specify the posts they want to show in certain parts of the front end theme. For example, the user may be able to specific “featured post” #1, #2, and #3 for a part of the home page. Without this plug-in, the template would have to execute a distinct post query for each post to ensure they are presented in the order specified as #1, 2, and 3. Now, a developer can execute a query for all the posts in one shot, sorting them by the specified order.

How does it work?

Let’s say you want to retrieve posts 20, 10, and 106, in that order. You can retrieve those posts without this plug-in using the “post__in” parameter with the post query.

query_posts( array( 'post__in' => array(20,10,106)  ) );

But they’ll be ordered by date, or one of the others you specify with the “orderby” parameter. This plug-in adds a new “orderby” option that will order the posts by the order they were specified in the “post__in” array! Here’s how to modify the query above to return the posts in the order specified:

query_posts( array( 'post__in' => array(20,10,106),  'orderby' => 'post__in' ) );

As always, feedback and suggestions are welcome!

2 Responses to “Sort Query by Post In (WordPress Plug-in)”

  1. BinaryBit says:

    Would you please provide me with a simple example through which a custom post type I created can utilize your code to sort posts in the ADMIN post list by a custom field. In my use case I developed a custom post type for upcoming events and I need to be able to sort the posts in the admin area by my custom field “event_start_date”. Your help is greatly appreciate.

  2. Jake Goldman says:

    – That’s not what this plug-in does.

    You *can* do what you’re striving to do by hooking the edit screen, checking the post type, and then filtering the orderby in the post query. If you have a budget and would like us to actually do it for you, please use the request quote button.