Take the 2-minute tour ×

When query a post, I need not only the post but also the post_meta. But seems the post query and meta query can not be done together.

With WP_Query, I first get the posts, then, I need to do get_post_meta(get_the_ID(),'key',true)

Is this the way WP works? Or, is there a way to query both in one hit?

share|improve this question

2 Answers 2

up vote 3 down vote accepted

When you do a query WordPress already gets the post_meta.

Even though you are calling get_post_meta() It is not performing another query. It is retrieving the value from the post meta cache.

Now if you don't need the post meta you can set a flag that will eliminate the additional MySql query. To do this you set 'update_post_meta_cache' => false in your args.

share|improve this answer
So, how to get the meta value when get the query results? –  Jenny Oct 1 '12 at 4:14
The meta_value is retrieved when you get the query_results. You have to call get_post_meta() just like you have to call the_content() –  Chris_O Oct 1 '12 at 4:23

You can also use get_post_custom() to return an array of all meta values so that you don't have to use the meta_key for each.

I was not aware that WP cached the meta data, thanks Chris_O.

share|improve this answer

Your Answer


