Custom post type showing same Post on all Pages

So, in researching your issue, I stumbled across another answer on WordPress StackExchange here: Resetting post data to previous loop in nested loops

But to solve your problem specifically, you need to reset your first WP_Query’s specific post data after your 2nd WP_Query is complete. Also, you should only need to reset the postdata if you are within your if statement, not after it:

Replace:

<?php endwhile; endif; wp_reset_query(); ?>

with:

<?php endwhile; $loop->reset_postdata(); endif; ?>

Side note: Since your second WP_Query doesn’t actually have anything to do with the first WP_Query, I would either move your second WP_Query ($custom_query) outside of the first one’s while loop.