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?

2 Answers 2


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.

  • So, how to get the meta value when get the query results?
    – Jenny
    Oct 1, 2012 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, 2012 at 4:23
  • Is post meta been cached when I call get_post?
    – Lai32290
    Mar 16, 2019 at 23:35

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.