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?


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.

| 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
  • Is post meta been cached when I call get_post? – Lai32290 Mar 16 '19 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.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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