Using wp_reset_query() really just makes sense if you are using query_posts(), which you don’t need and shouldn’t do – see
When should you use WP_Query vs query_posts() vs get_posts()?
.
This means you should go with WP_Query and wp_reset_postdata() instead. Besides that you should give your custom, secondary queries a object, name differing from $query
– like this:
$your_custom_query = new WP_Query($args);
while ($your_custom_query->have_posts()): $your_custom_query->the_post();
//post stuff
endwhile; wp_reset_postdata(); endif;