Parent Role Documentation

Documentation โ€” Tutor Parent Role
Tutor Parent Role โ€” Documentation
Plugin Documentation

Tutor Parent Role
for Tutor LMS

Everything you need to set up and manage a parent role on your Tutor LMS site โ€” letting parents monitor their children’s courses, enroll them in new ones, and stay connected through a secure invitation and dashboard system.

๐Ÿ“ฆ Version 2.1.0 ๐Ÿ”Œ Requires: Tutor LMS ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Multi-parent & co-enrollment support

Ready to get started?

One-time payment ยท Lifetime updates ยท Secure checkout via WooCommerce

Purchase the Plugin โ€” $149 โ†’
Section 1

Overview

Tutor Parent Role adds a dedicated “Parent” user role to Tutor LMS. It enables parents or guardians to monitor their children’s enrolled courses and progress, enroll them in new courses, and manage the parent-child relationship โ€” all without requiring any access to the WordPress admin dashboard.

The plugin is ideal for schools, tutoring platforms, and any family-oriented e-learning site where parental oversight is part of the experience.

What it does

  • Creates a custom Parent role with fine-grained, minimal permissions
  • Allows parents to monitor their children’s enrolled courses and progress
  • Enables parents to enroll their children in courses they personally have access to
  • Provides a secure email invitation system for parents to connect with their children
  • Syncs enrollment access โ€” when a parent loses course access, their children’s enrollment is automatically cancelled
  • Integrates with WooCommerce Memberships for Tutor LMS and Tutor LMS Installments
  • Includes a full admin interface for managing all parent-child relationships

Key benefits

  • Parental oversight of children’s online courses without giving parents any admin access
  • Automated enrollment sync keeps child access aligned with parent access at all times
  • Flexible role assignment โ€” via admin panel, user self-request, or domain whitelist
  • Multi-parent support โ€” a child can have multiple parents, and access is only revoked when all of them lose it
  • Secure invitation workflow requiring the child to confirm before a relationship is created
Section 2

Requirements

Minimum requirements

ComponentMinimum version
WordPress5.8 or higher
PHP7.4 or higher
Tutor LMS2.0 or higher (Free or Pro)

Recommended environment

ComponentRecommendation
WordPressLatest version
PHP8.0 or higher
Tutor LMSLatest version (Pro recommended for advanced features)
SMTP Plugine.g., WP Mail SMTP โ€” for reliable HTML email delivery
SSL CertificateRequired for secure cookie handling

Required plugin

Optional but recommended

  • WooCommerce Memberships for Tutor LMS (Ksajie) โ€” for membership-based enrollment integration
  • Tutor LMS Installments (Ksajie) โ€” for installment payment integration
  • SMTP Plugin โ€” for reliable delivery of all invitation and notification emails
Section 3

Installation

Method 1: WordPress admin upload (recommended)

  1. Log in to your WordPress admin dashboard
  2. Navigate to Plugins โ†’ Add New
  3. Click Upload Plugin
  4. Select the tutor-parent-role.zip file
  5. Click Install Now
  6. Click Activate Plugin

Method 2: Manual FTP installation

  1. Unzip the tutor-parent-role.zip file
  2. Upload the tutor-parent-role folder to /wp-content/plugins/
  3. Navigate to Plugins โ†’ Installed Plugins in WordPress admin
  4. Find “Tutor Parent Role” and click Activate

Post-installation steps

  1. Verify Tutor LMS is active and fully configured
  2. Enter your license key when prompted after activation
  3. Navigate to Tutor โ†’ Parent Settings and configure the role assignment mode
  4. Create or designate a page with the [tutor_parent_dashboard] shortcode for the parent-facing portal
  5. Test by assigning yourself the parent role and creating a test parent-child relationship
Section 4

Configuration

Navigate to Tutor โ†’ Parent Settings in the WordPress admin to configure the plugin.

Parent role assignment settings

SettingDescription
Auto-GrantWhen enabled, users receive the parent role immediately upon submitting a request โ€” no admin review required.
Require Admin ApprovalParent role requests are queued for manual admin review. Admins can approve or deny from the Requests page.
Auto-Approve DomainsComma-separated list of email addresses or @domain.com patterns. Matching users are auto-approved without manual review.
Notification EmailThe email address that receives admin notifications when a new role request is submitted.

Approval logic priority

When a user submits a role request, the plugin checks in this order:

  1. Auto-Grant is enabled โ†’ role granted immediately
  2. User’s email matches the domain whitelist โ†’ role granted automatically
  3. Neither condition met โ†’ request queued for admin review

Domain whitelist format examples

  • Full email address: parent@school.edu
  • Domain only: @school.edu
  • Multiple entries: @school.edu, admin@otherdomain.com, @company.org
Section 5

Parent Role & Requests

The Parent role (tutor_parent) is a custom WordPress role with minimal permissions. Parents can view their children’s progress and manage enrollments from the frontend dashboard โ€” they have no access to the WordPress admin area.

How a user requests the parent role

Users who don’t yet have the parent role can request it from the frontend. When a logged-in user visits the page containing the [tutor_parent_dashboard] shortcode and doesn’t have the parent role, a role request form is displayed automatically.

  1. User visits the parent dashboard page
  2. A request form is shown with an optional reason field
  3. User submits the form โ€” the system checks for auto-grant or domain whitelist match
  4. If neither applies, a pending request is created and the admin is notified by email
  5. Admin reviews the request and clicks Approve or Deny from Tutor โ†’ Requests
  6. User is notified by email of the decision
โ„น๏ธ

Users cannot submit duplicate requests. If a pending request already exists, a message is shown instead of creating another entry.

Admin role management

Admins can also manually assign or remove the parent role from any user directly from Tutor โ†’ Parents, without the user needing to submit a request. Removing a parent’s role also removes all of their assigned children.

Section 6

Parent-Child Relationships

Once a user has the parent role, they can be linked to one or more children. A child can also have multiple parents โ€” the plugin tracks all relationships independently.

How relationships are created

  • Via email invitation โ€” the parent sends an invitation; the child accepts it (see Section 7)
  • Via admin assignment โ€” an admin navigates to the parent’s detail page and adds a child directly

Admin-side relationship management

From Tutor โ†’ Parents, admins can view any parent’s profile, add or remove children using a live AJAX user search, and see the date each relationship was created. Removing a child from a parent does not delete the child’s account or enrollments โ€” it only removes the link.

When a child is assigned to a parent by an admin, the parent receives an email notification automatically.

Section 7

Email Invitation System

Parents can invite their children to connect using email invitations sent directly from the parent dashboard. This requires the child to actively confirm, ensuring no relationship is created without consent.

Invitation flow

  1. Parent enters the child’s email address in the “Invite Child” section of the dashboard
  2. Plugin verifies the email belongs to a registered, non-parent user not already linked
  3. A unique invitation code is generated, valid for 14 days
  4. An email is sent to the child with a link to the Tutor LMS Dashboard โ†’ Invitations tab
  5. Child can accept or reject the invitation from the Invitations tab
  6. On acceptance, the parent-child relationship is created automatically
  7. Parent receives an email notification of the child’s decision

Invitation states

Pending
Invitation sent, awaiting the child’s response
Accepted
Child accepted; parent-child link has been created
Rejected
Child declined the invitation
Expired
Invitation was not acted upon within 14 days
Cancelled
Parent cancelled the invitation before it was acted upon

Invitations tab in student dashboard

The plugin automatically adds an “Invitations” tab to the Tutor LMS student dashboard for all non-parent users. Students can view pending invitations and accept or reject them directly from this tab. A template file is auto-created in the active theme on first activation โ€” if auto-creation fails, manual creation instructions are shown in the admin.

Section 8

Course Enrollment Management

From the parent dashboard, parents can see all courses they are personally enrolled in and enroll any of their linked children in those same courses.

Enrollment rules

  • A parent can only enroll a child in courses the parent themselves is actively enrolled in
  • The child’s enrollment is created as immediately active โ€” no pending approval needed
  • The enrollment is tagged with the source “parent” and includes the enrolling parent’s ID in its metadata
  • If the child is already enrolled in the same course from another source (individual purchase or membership), the existing enrollment is left completely untouched
  • If the child already has a parent-source enrollment in the course, the current parent is added as a co-parent without creating a duplicate enrollment

Co-parent enrollment

Multiple parents can enroll the same child in the same course. The plugin stores the list of all enrolling parent IDs on the enrollment. This is what powers the multi-parent protection in the sync system โ€” a child’s access is only revoked when every parent who enrolled them has lost access to that course.

Section 9

Enrollment Synchronization

The enrollment sync system automatically keeps children’s course access aligned with their parent’s access. It monitors multiple WordPress and Tutor LMS events and reacts in real time.

What triggers a sync

  • A parent’s enrollment post status changes (e.g., completed โ†’ cancel)
  • A parent’s enrollment is trashed or permanently deleted
  • Tutor LMS fires its own enrollment cancellation or expiration hooks
  • The WooCommerce Memberships plugin revokes a membership-based enrollment
  • A full membership expiration event fires
  • A parent purchases a new course (triggers re-enrollment of children if they were previously cancelled)
โ„น๏ธ

To catch cancellations made directly through the Tutor LMS admin interface, the plugin uses an admin-side change monitor: enrollment statuses are cached at the start of each admin request and compared at the end. Any changes detected trigger the sync logic automatically.

Cancellation logic

When a parent’s enrollment cancellation is detected, the plugin removes that parent from the child enrollment’s parent list, then checks whether any remaining parent still has active access to the course. If no other parent has active access, the child’s enrollment is cancelled. If at least one other parent still has access, the child’s enrollment is left untouched.

Enrollment source protection

The sync system only ever cancels enrollments with the source “parent”. Enrollments tagged as “individual”, “membership”, or “orphaned” are never touched by the parent sync logic โ€” a parent losing access cannot remove a child’s individually purchased course.

Re-enrollment on parent access restoration

When a parent regains access to a course (for example, by purchasing it again or renewing a membership), the plugin checks for any children whose enrollment was previously cancelled due to this parent losing access, and re-enrolls them automatically.

Section 10

Parent Dashboard

The parent dashboard is the primary frontend interface for parents. It is embedded on any WordPress page using the [tutor_parent_dashboard] shortcode and renders different content depending on the user’s state.

What the dashboard shows

For a logged-in parent with children, the dashboard presents five sections:

  • My Children โ€” list of linked children with a selector to switch the active child view
  • Course Progress โ€” courses the selected child is enrolled in, with progress indicators
  • Assign Courses โ€” list of the parent’s own courses with enrollment controls for each child
  • Invite Child โ€” form to send email invitations to new children by email address
  • Pending Invitations โ€” list of outgoing invitations with their current status and a cancel option

Dashboard states

User stateWhat is shown
Not logged inLogin prompt
Logged in, no parent roleParent role request form
Logged in, parent role, no children yetEmpty state with invitation form
Logged in, parent role, has childrenFull dashboard with all five sections
Admin userFull dashboard with access to all children and no restrictions
โ„น๏ธ

The selected child is persisted via user meta and a 7-day cookie, so parents don’t need to re-select their child on every visit.

Section 11

Admin Interface

All admin pages are accessible under the Tutor LMS admin menu.

Parents page (Tutor โ†’ Parents)

Lists all users with the Parent role in a table showing display name, email, number of assigned children, registration date, and two actions: View (opens the parent detail page) and Remove Role (removes the parent role and all of their assigned children). An “Add Parent” button reveals a live user search to assign the role to any existing user.

Parent detail page

Shows full information for a single parent โ€” their profile information, a table of all assigned children with remove and view-profile actions, and an “Add Child” form with live AJAX search that only returns users who don’t already have the parent role and aren’t already assigned to this parent.

Requests page (Tutor โ†’ Requests)

Two tabs: Pending and All Requests. The Pending tab lists requests awaiting review with the submitted reason and Approve/Deny buttons. The All Requests tab shows the full history with status badges, approval method, submission date, and reviewer name. A count badge appears next to the Requests menu item whenever there are pending requests waiting for review.

Section 12

Email Notifications

All emails are sent as HTML using a consistent branded template. The following emails are sent automatically:

TriggerRecipient
Parent role request submittedSite admin (at the configured notification email)
Role request approvedThe requesting user
Role request deniedThe requesting user
Child assigned to parent (by admin)The parent
Invitation sentThe child (student)
Invitation acceptedThe parent
Invitation rejectedThe parent
โ„น๏ธ

All email subjects are prefixed with the site name in brackets, e.g., “[My School] New Parent Role Request”. The admin notification email address is configurable in Tutor โ†’ Parent Settings.

Section 13

Shortcode

[tutor_parent_dashboard]
Embeds the parent management dashboard on any WordPress page or post. This is the primary frontend interface for parents โ€” handling role requests, child management, invitations, course enrollment, and progress monitoring all in one place. No attributes needed; the shortcode detects the logged-in user’s state and renders the appropriate view automatically.
โš ๏ธ

Only create one page with this shortcode. The plugin uses this page as the destination for email invitation links โ€” multiple pages with the shortcode can cause link routing issues.

Section 14

Frequently Asked Questions

Yes. Multiple parents can be linked to the same child. Each parent’s enrollment and access is tracked independently. A child only loses access to a course when every parent who enrolled them has lost their own access to that course.
No. A parent can only enroll their child in courses they themselves are actively enrolled in. This prevents parents from granting children access to courses the parent hasn’t purchased or been granted access to.
The plugin works with both Tutor LMS Free and Pro. Some advanced Tutor LMS features like course bundles or certain detailed progress metrics may require Tutor LMS Pro, but the core parent role, invitation, and enrollment features work with the free version.
Yes. When the membership plugin is active, the two plugins share the same enrollment source meta key to ensure consistent enrollment source tracking across both systems. This means that membership-based enrollments and parent-enrolled enrollments are correctly distinguished and neither system accidentally cancels the other’s enrollments.
Deactivation does not delete any data. The parent role and all relationships remain intact. Upon reactivation, everything continues working exactly as before.
By default, only license-related options are deleted on uninstall. All parent-child relationships, the parent role, and database tables are preserved to protect your data. A full cleanup option is available for advanced users who want to remove all plugin data entirely.
Admins can access the parent dashboard shortcode and view all children’s data without restriction, which is useful for testing and support. However, admins are explicitly excluded from the standard parent role checks โ€” an admin is never treated as a parent in the enrollment sync logic, preventing any unintended side effects on their account.
Yes. If a child rejects an invitation, the parent can send a new invitation to the same email address. The previous rejected invitation is kept in the history for reference, but it does not block a new one from being sent.
Section 15

Troubleshooting

Before reporting an issue, enable WordPress debug logging (WP_DEBUG_LOG in wp-config.php). All plugin log entries are prefixed with [Tutor Parent Role] for easy filtering.

! Parent role not showing after it was added

The plugin clears user caches after adding the role. If the role still doesn’t appear:

  • Ask the user to log out and log back in
  • If you use a caching plugin, flush all caches โ€” stale cached sessions may serve outdated role data
  • Check the error log for lines starting with [Tutor Parent Role] to confirm the role addition was processed
! Children not losing access when parent’s enrollment is cancelled

The enrollment sync monitors multiple hooks but relies on the enrollment being accessible at the time the hook fires. Verify:

  • The parent’s enrollment status is truly “cancel” โ€” not just unpublished or in a draft state
  • The child’s enrollment has source “parent” โ€” enrollments with other sources are intentionally protected and will not be affected
  • Check the error log for “[Tutor Parent Role] Processing cancellation” messages to trace the sync execution
  • If the cancellation was made via the Tutor LMS admin interface, it may have been caught by the admin-side change monitor on shutdown โ€” confirm no other process overrode the status after the shutdown hook ran
! Invitations tab not appearing in the student dashboard

The Invitations tab is added via a Tutor LMS dashboard filter. If it does not appear:

  • Verify the template file exists at {active-theme}/tutor/dashboard/invitations.php
  • Check the admin notice on the Plugins or Tutor screens โ€” if auto-creation failed, manual creation instructions are shown there
  • Check the browser console for JavaScript errors on the invitations page, as assets are injected inline via wp_head
! Database table missing

The plugin performs a self-healing check once per day. If a table is found to be missing, it is recreated automatically. If you suspect a table is missing and need to force a recreation immediately, deactivate and reactivate the plugin โ€” this triggers the table creation routine again.

! Emails not being received

All emails use WordPress’s built-in wp_mail() function. If emails are not arriving:

  • Install and configure a transactional SMTP plugin (e.g., WP Mail SMTP) โ€” this is the most common cause of missed WordPress emails
  • Check that the notification email address in Tutor โ†’ Parent Settings is correct
  • Check your server’s email logs โ€” the email may be sending successfully but getting caught by spam filters on the recipient’s end
Section 16

Support

๐Ÿ’ฌ

Need help? Visit the support portal

If you’re experiencing an issue not covered in this documentation or the troubleshooting section, you can submit a support request through the portal. Please include the details below in your message to help us resolve your issue quickly.

Open Support Portal โ†’
Your WordPress version
Your PHP version
Your Tutor LMS version
Relevant lines from your WordPress debug log (enable with WP_DEBUG_LOG in wp-config.php)
A clear description of the steps to reproduce the issue