flush_rewrite_rules on every register_post_type?

Don’t call flush_rewrite_rules. It’s a super expensive call to make and slows everything down.

Also the order matters, but the correct thing to do is register all your content types, then re-save permalinks in WP Admin, and then… nothing, you’ve done everything. Only flush permalinks when things have changed, not on every page load. Visiting the permalinks page should be enough to flush them.

Also, don’t register post types and taxonomies inside themes, you’ll loose access to the data when the user switches to another theme. Themes are for looks, plugins are for functionality