Membership-style course workflow

A course included with a subscription, a membership tier, or a job role — access that continues while a condition holds, rather than being bought once.

What you are building

A course whose access is decided by a permission rule rather than by a single purchase. The rule can test a role, a subscription, a purchase history or a date, and it is re-evaluated on every visit.

That last point is what makes it a membership: when the condition stops being true, access stops.

Decide the condition

Membership is The rule tests
A paid subscription Subscription based on a product, active
A customer tier you assign Role is
Everyone who bought any product in a bundle Has purchased ANY of
Everyone who bought the whole bundle Has purchased ALL of
Staff only Role is
A limited window after purchase A purchase-date condition

Rules also support excluding people — Role is not, has not purchased, NONE of — which is how you build a course for everyone except a particular group.

Build it

1. Create the rule

In the theme's permission-rule settings, create a rule and name it for what it means: Active members, Pro tier, Staff.

Rules are shared across the site, so one rule can govern many courses. That is the point: change the rule once and every course it governs follows.

2. Create the course

Title, description, featured image, sections, lessons — exactly as any other course.

3. Apply the rule

In the course's Global permission rule, select it.

Field Value
To access this course, users must be logged in On
Global permission rule Your rule
This is a paid course Off

The rule is checked before the paid-course setting, so a course with a rule does not need the paid flag as well. Setting both means the rule decides and the purchase check never runs — which is rarely what anyone intends.

4. Write the no-access message

Members and non-members both land here, so the message has to work for a stranger:

This course is part of the membership. {related_product_links}

If the rule is role-based and there is nothing to sell, say how to qualify and who to contact instead.

5. Repeat for the rest of the tier

Apply the same rule to every course in the membership. Now the whole library is governed by one setting.

Test it

With two test accounts — one that matches the rule, one that does not:

  1. As the matching account, open the course and confirm it works, and that My courses shows Access granted by permission rule.
  2. As the non-matching account, confirm the no-access message.
  3. If the rule is subscription-based, end the subscription and confirm access stops.
  4. Restore it and confirm access returns, with progress intact.

Step 3 is the one people skip, and it is the one that matters — the whole model depends on access ending correctly.

When membership lapses

The course disappears from My courses with no explanation, and no email is sent.

Two consequences:

  • Your renewal reminders must come from elsewhere — your subscription plugin's emails or your mailing tool.
  • Your empty-list message should mention lapsed access, since that is where a lapsed member ends up. See The empty My courses message.

Progress survives. A returning member picks up exactly where they stopped, which is worth saying in the renewal message.

Mixing membership and individual sales

This is the hard case, and it is worth being clear about the limit: a rule has one requirement type. There is no rule meaning "an active subscriber or someone who bought this course".

Nor can you use the rule and the paid-course setting together — the rule is checked first, so the purchase check never runs and individual buyers are blocked.

What does work:

Approach How
Sell membership only Everything is governed by the subscription rule; individual sales are not offered
One purchase rule covering both A Has purchased ANY of rule listing both the membership product and the individual product. Note that this grants access while those orders stay paid, so it does not end when a subscription lapses
Subscription rule plus a separate course The membership course carries the rule; a separately sold edition is its own course with the paid setting

The second is the usual compromise, and the caveat is the whole story: it treats a subscription as a purchase, so it is right for a plan you do not need to expire and wrong for one you do.

Decide which matters more — a single course to maintain, or access that ends when payment does.

What this workflow does not give you

  • No membership dashboard, tier display or member directory.
  • No email when a member joins, lapses or returns.
  • No proration, upgrade path or trial handling — those belong to your subscription plugin.