Hi Michele,
There isn’t currently a way to do this through the Custom Registration/Profile Fields. However, it’s certainly possible.
To give specific users access to additional pages, you’ll want to give those extra pages specific Custom Capabilities and then assign those users the Custom Capabilities for the pages you want to give them access to. Please see this video for more on Custom Capabilities.
To automatically assign new users one or more Custom Capabilities, you simply add those Custom Capabilities to the ccaps=”” attribute in your Free Registration shortcode. When the user signs up with that Free Registration form, they’ll automatically get those Custom Capabilities and therefore have access to the pages restricted to them.
The easiest way to handle the various sign up forms (each configured to assign different Custom Capabilities) is to create separate signup pages for each form and then direct the user to the correct page. However, you can also use Dynamic Shortcode Attributes to configure one signup form differently depending on the variables you pass to it.
To process the “Registration Code” from the user, you’ll need to create a separate page (a page that comes before the actual registration form) that does the work of validating the Registration Code. If the code is valid, you can send the user to the correct Free Registration form that has been pre-configured (or gets dynamically configured) with the correct Custom Capabilities.
You should be able to follow the Offering a Free Coupon Code KB article and use the examples there to create a solution for your Registration Code scenario, as they are quite similar. However, if you’re not comfortable with PHP you may want to hire a programmer to implement this (we recommend posting a job at jobs.wordpress.net).