The “main” query on the page is saved to a global
called $wp_query
. That global
determines a great deal about the page, including both content and which template is used to display that content. Using $wp_query
overwrites that main query and can cause some very basic things to fail but get_the_category()
is probably not one of them.
It is more likely that there is something wrong with your Loop. What matters for get_the_category()
is another global
called $post
. $post
is set at each iteration of a proper Loop to the “current post”. If get_the_category()
is not passed a post ID, it will assume that $post
is the post in question.
Without seeing the code, that is the best I’ve got.