How to manage course access by membership level in WordPress
WordPress cannot restrict LMS courses by membership level on its own. Use the access controls built into your LMS, or connect a membership plugin to map each level to specific courses and update enrolments when membership status changes.
- 01Map levels to courses
- 02Use the LMS access controls
- 03Set restriction behaviour
- 04Test the membership lifecycle
- 05Use Paid Memberships Pro for the fast route
What you need
- An LMS installed on WordPress, or a course plugin that supports access rules
- Defined membership levels and the courses each level should include
- Administrator access and a test member account
- A checkout or registration method if members will join themselves
Map levels to courses
Write down exactly what each membership level should access. For example, Bronze might include Course A, while Gold includes Courses A, B and C. Decide whether an upgrade adds access, replaces the old level, or lets members keep several levels at once.
Use one clear source of truth for access. If both the LMS and membership plugin have separate enrolment rules, a member can still see a course after their membership expires or be blocked after paying.
Use the LMS access controls
Check whether your LMS has its own membership, bundle, group or access-plan feature. LifterLMS can attach courses to a membership through its membership auto-enrolment settings, while LearnDash can use course access settings and an integration to associate membership levels with courses.
This is the manual route and is fine for a small site when your LMS already handles memberships. Open the membership or bundle, add the courses, and configure what happens to access when the membership ends. The drawback is that each LMS uses different terminology and rules, so moving between systems or adding a separate membership plugin can create duplicate enrolments.
Set restriction behaviour
Choose what visitors and members without the right level see. Common options are a login prompt, a membership sales page, a custom message or a redirect. Keep the course sales page public if you want people to read the outline, but protect lessons and downloadable materials.
Check direct lesson URLs as well as the course page. Some systems protect the course but leave a lesson or attached file exposed unless the lesson inherits the course restriction. LifterLMS, for example, provides membership restriction settings and configurable redirects for restricted content.
Test the membership lifecycle
Use a separate test account to check four states: no membership, the lowest level, an upgraded level and an expired or cancelled level. Confirm the course catalogue, course page, lessons, quizzes, downloads and progress dashboard all behave as expected.
Pay particular attention to existing members when you add a new course or change a rule. Some integrations enrol people only when they join or change level, so current members may need to be enrolled or removed manually.
Use Paid Memberships Pro for the fast route
For a membership-led site, install Paid Memberships Pro and its Courses for Membership Add On, then choose whether to use its native course module or connect it to an LMS such as LearnDash, LifterLMS, Tutor LMS or Sensei LMS. The add-on lets you select the membership levels that can access a course; with supported integrations, members can be enrolled when they complete checkout.
For the native module, go to Memberships > Courses, enable the course module, create the course and lessons, then select the permitted levels in the course’s Require Membership settings. For LearnDash, enable its module, set the course or group’s required levels, and set the LearnDash course access mode to Closed. Do not assume existing members will be updated automatically; review and correct their enrolments after changing protection.
Let Paid Memberships Pro do it
Connects membership levels to native or third-party courses; choose it when course access should follow member status.
Sources
- lifterlms.com /docs/getting-started-with-creating-memberships/?utm_source=…
- lifterlms.com /docs/lifterlms-restrict-site-membership-level-setting/?utm_…
- paidmembershipspro.com /documentation/add-on-docs/courses-for-membership-add-on/int…
- paidmembershipspro.com /documentation/add-on-docs/courses-for-membership-add-on/?ut…
- paidmembershipspro.com /documentation/add-on-docs/courses-for-membership-add-on/def…
- paidmembershipspro.com /documentation/add-on-docs/courses-for-membership-add-on/def…
Questions
- Can WordPress restrict courses by membership level without a plugin?
- No, WordPress core does not provide membership levels or LMS course enrolment rules. You need an LMS or membership plugin to store access decisions and protect course content. Custom code can connect user roles or user metadata to course access, but it must also handle login state, upgrades, cancellations, expiry and direct URLs, so it is rarely the sensible starting point.
- Should the LMS or membership plugin control course access?
- Choose one system as the authority for access. If membership status is the thing that grants access, let the membership plugin map levels to courses and pass enrolment changes to the LMS. If the LMS already includes memberships and payment plans, its native controls may be simpler. Running both systems independently is a common cause of stale access and duplicate enrolments.
- What happens when a member upgrades or cancels?
- The result depends on the integration, so test it rather than assuming. A well-connected setup enrols the member in newly available courses and removes access to courses no longer included. Some systems update only when a member checks out or changes level, leaving existing users out of newly protected courses until you repair their enrolments manually.
- Can I show a course page but hide the lessons?
- Yes, most course systems allow the course page to act as a public sales page while lessons remain protected. Check the restriction settings for lessons, quizzes, downloads and video embeds separately. Also test a lesson URL while logged out, because protecting the course listing alone does not always protect every attached content type.
- How do I display only the courses a member can access?
- Use the member-course list provided by your LMS or membership integration instead of listing every course manually. Paid Memberships Pro’s Courses for Membership Add On provides a My Courses block and shortcode that can show courses available to the logged-in member, including active or inactive access states.