This question already has an answer here:

i have seen $wp_query and $wp_the_query in many plugins and themes. for me these two are just same thing with no difference. i am not looking to either use or get the values from $GLOBALS.

what is the actual difference between these two objects and when to use them? What is the proper action /filter hook for getting and reading values from $wp_query and $wp_the_query.

marked as duplicate by Mark Kaplun, cjbj, Dave Romsey, kraftner, Howdy_McGee Mar 21 '17 at 19:53

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


You should read in this answer it explains it in depth.

in short,

  • $wp_query is the variable that holds a copy of $wp_the_query global query that could/can be modified by plugins and themes
  • $wp_the_query is the variable that holds an unmodified copy of the global query object and used to reset the $wp_query object when we call wp_reset_query()

I think you now understand as to why it makes sense to have both available to us.

  • that's what i was looking for. can you suggest safe way to access wp_the_query from plugins? – Anwer AR Mar 21 '17 at 11:00
  • I'm not sure I understand what you mean by safe... but $GLOBALS[ 'wp_the_query' ] should give you access to that variable. – bynicolas Mar 22 '17 at 3:32
  • i mean that variable is not immediately accessible from plugin. it does not work with init action hook. – Anwer AR Mar 22 '17 at 9:19
  • 1
    Oh ok, I believe this is normal behaviour because your hook is too soon. The query is not set up yet at init. Try a later hook like wp or template_redirect, you should have access to the variable. Check out this link for reference on hook sequence. – bynicolas Mar 22 '17 at 11:02

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