I'm creating a Directory and Class Registration/Management site.
Current Toolset Build:
Post Types:
- Classes
- Businesses
- Persons : related to Businesses and Classes
Templates and Views created for each.
Goals:
1) Logged on Users (Students) to the site can 'Register' for each Class offering, thereby creating a list of people that want to take that course.
2) The Course creator (Instructor) can view their Classes and the list of people signed up for it
3) The Course creator can add Students to their Course lists and delete them
4) The Student can view a 'Dashboard' that shows what they're registered for and afterwards their earned 'Certificate'
Looking for help as to what I'd use in Toolset to accomplish this. I'm okay with hiring a Toolset Contractor too, but first wanted to understand if all this is even possible with Toolset.
Hi, as an overview this generally sounds possible with Toolset. Nothing in the description stands out as being obviously out-of-scope for the software, given that I have a limited amount of information. I can see the need for at least the following Toolset plugins.
- Types: to create custom post types, custom fields, custom taxonomies, and post relationships
- Views: to create lists of items, custom searches, post archives and templates
- Forms: to allow front-end content submission by Students and/or Instructors
- Access Control: to restrict access to front-end content and submission based on user role, post type, and other criteria
You'll need a way to create relationships between Users and custom post types - for example, a many-to-many relationship between Students and Classes to create registration lists. Toolset's post relationships feature can only be used to relate post types, not Users and posts. So we have information available about how to use a "proxy" post type to represent each User: https://toolset.com/documentation/post-relationships/how-to-create-custom-searches-and-relationships-for-users/
Once that's set up, you can then use post relationships and custom searches more effectively with Users.
I didn't see any information about requiring payment for registration, so I assume that's not included. If it is, you'll also need WooCommerce and Toolset's WooCommerce Views, and possibly Toolset's Forms Commerce plugin. There are also some paid WooCommerce extensions that you may find useful, like Subscriptions and Membership management.
I'd be glad to discuss any other specific feature you need and how it can be accomplished within the Toolset environment.
Thank you for the high-level overview.
Now for specifics.
Can you walk me through:
1) will I need to use Intermediate post types?
2) setting up the ‘registration lists’?
1) will I need to use Intermediate post types?
If you want the relationship itself to store custom fields they need to be saved somewhere, and an intermediate post reflecting the connection between two other posts is the best place to do it.
For example you could create a many-to-many relationship between Students and Classes called "Registrations", and add a custom field to each Registration that stores the date of registration, or an indicator of whether or not the Student was accepted to the Class by the Instructor.
2) setting up the ‘registration lists’?
Let's say you create a many-to-many relationship between Student posts and Classes posts. This relationship is called "Registrations". Let's say a Student User logs into the site and visits a Class they want to register for. On that Class post you will add a link to create a post relationship between the Student post and the Class post. We have information about using Post Relationship Forms available here: https://toolset.com/documentation/post-relationships/how-to-build-front-end-forms-for-connecting-posts/creating-new-connections-between-related-posts/
When the Student User submits the Form, a Registration relationship will be established between the Class and the Student.
Now to display the list of registered Students for a given Class, you will create a View of Students, filtered by the registration post relationship. If you place this View in the Class post template, you can set the post relationship Query filter so that the parent Class is determined by the post where the View is being displayed. If you place the View in a View of Classes, you can configure the filter so that the parent Class is determined by the current post in the Loop. For other situations, you can use a shortcode attribute to set the parent Class.
Now let's assume the Instructor checks the Registrations list on his or her Class post, and wants to add some registered students to the Class roll. You could handle this in multiple ways. One way is to show a link to edit the relationship using a relationship Form, where the Instructor can set a custom field in the Registration relationship that says whether or not the Student was accepted. Another option is to create a second many-to-many relationship between Students and Classes called "Rolls" or "Accepted" or something similar, and follow the same steps you took to relate Students and Classes, but this time in the new many-to-many relationship. Then you could use a View on the Class post template to show all the Students that were accepted into the Class by filtering with the Roll post relationship.