WP_Query always returning the last custom post

There is no post_name argument for WP_Query, if you’re querying by slug, it’s just name. Without that argument, your query just gets the latest post back.