Also what will the students be paying for, will they be paying for the classes? or will they be paying for the course. Or is it that they will be paying for their application to the course.
Good question. Students purchase a class (CPT) which may or may not be held over multiple days (schedule CPT)
I'm thinking the courses and classes as well as educators would've already been setup.
Just educators are setup right now. Everything else is static or a product in Woocommerce
The Classes can have schedules as you say implemented as repeatable field groups which can be displayed on the classes page.
Agreed
Essentially a class will belong to a Course, will that class be attached to more than one course or is it unique to the class?
Each class created would be unique to only that course. So for example, a course called "Baby Nutrition" would have multiple classes of which the student would purchase one. So for example, student A might purchase the September class which is held over two days, while student B might purchase the January class which is held on just one day.
I'm thinking teachers would be many to many with Classes since they can teach multiple classes and have multiple classes assigned to them.
Exactly.
So in summary this?
Setup 3 CPTs:
1. Teacher/Educator
2. Class - simple CPT with just a name
3. Schedule - have a repeating field group with start date/time and end date/time
Create these Relationships:
Teacher <> Class = many/many
Class <> Schedule = one/many
Questions I still have:
1. Is it possible to force a rule that for the Schedule CPT, that the end date must match the start date?
2. Is it possible to require the user to input an end date/time?
3. How would I add an e-commerce layer with inventory control? I assume I would create a field called "stock" for the Class CPT but how would I implement payment and stock reduction?
4. If the e-comm part is difficult, could I still use Woocommerce products instead and have a variable product be modified when a class or schedule changes?
Classes and Schedules are likely to change often by the client. This is the core issue I'm trying to solve. At the moment, I adjust the static page, and then adjust the Woocommerce product attributes and variations. Its functional, but not great for content management.