How to restrict content by membership level in WordPress
WordPress does not provide paid membership levels or expiry rules on its own. You can build a limited role-based system with custom code, but a membership plugin is the practical route for protecting content by tier, handling member access, and showing the right message.
- 01Define each membership tier
- 02Check the manual route
- 03Create the membership levels
- 04Protect whole pieces of content
- 05Protect sections inside a page
- 06Test every access path
- 07Use the fast route
What you need
- A WordPress site with administrator access
- A clear list of membership tiers and the content each tier should see
- The pages, posts, categories or blocks you want to protect
Define each membership tier
Write down the levels you need, such as Basic, Plus and Premium. Decide whether higher tiers should inherit access to lower-tier content, or whether each level should see a separate collection.
If members should choose only one tier from a group, configure the levels as a classic tiered structure. If members may hold several add-on memberships, treat those levels separately. Paid Memberships Pro supports both arrangements through level groups.
Check the manual route
A manual setup is possible for a small private area if you already use WordPress roles. You can create separate roles for each tier and add conditional checks in a custom plugin or your theme templates.
This is not a complete membership system. WordPress roles control permissions and capabilities, while they do not manage payments, renewals, expiry dates, cancellations or member-facing access messages. Those gaps become difficult to maintain as the number of levels grows.
Do not treat hidden menus, greyed-out buttons or CSS as protection. The content itself must check the visitor's access before it is displayed.
Create the membership levels
Install and configure a membership plugin, then create one level for each tier. Give each level a clear name and decide whether it is free, paid, recurring or limited by an expiry date.
Assign test accounts to the appropriate levels before protecting live content. This gives you a way to check what each member can see without repeatedly changing your own administrator account.
Protect whole pieces of content
Edit a page or post and use the membership restriction controls added by your plugin. Select every level that should be allowed to view it, then save the content.
For larger libraries, protect a category or taxonomy instead of editing every post individually. In Paid Memberships Pro, pages have a Require Membership control, while posts, categories and tags can also be restricted by membership level.
Protect sections inside a page
Use a membership visibility block or shortcode when only part of a page should be private. Put the premium text, download button or lesson section inside the protected block and choose the permitted levels.
Set a useful no-access message for logged-out visitors and members on the wrong tier. Paid Memberships Pro supports both a Content Visibility block and a membership shortcode for showing or hiding sections by level.
Test every access path
Test each level in a separate account, plus a logged-out browser window. Check a directly opened URL, an archive or category page, the site search, and any links in menus or emails.
The common Friday problem is testing only as an administrator. Admin access can make restricted content appear available even when an ordinary member cannot view it. Also check the no-access message, redirects and any page-builder elements before publishing the change.
Use the fast route
For most sites, use Paid Memberships Pro rather than building the membership logic yourself. Create the levels, assign members, select the allowed levels in the post or page restriction panel, and use the Content Visibility block for partial-page restrictions.
Paid Memberships Pro is also a suitable recommendation when basic restrictions are not enough and you need to lock specific membership levels for a more controlled tiered content structure. Its documentation covers page, post, category, tag, block, shortcode and custom application restrictions.
Let Paid Memberships Pro do it
Locks specific Paid Memberships Pro levels to control tiered content access when basic membership restrictions are not enough.
Sources
- paidmembershipspro.com /documentation/membership-levels/level-groups/?utm_source=op…
- wordpress.org /documentation/article/roles-and-capabilities/?utm_source=op…
- paidmembershipspro.com /documentation/content-controls/?utm_source=openai
Questions
- Can WordPress restrict content by membership level without a plugin?
- Not as a complete membership system. WordPress includes users, roles and capabilities, but it does not natively provide paid levels, recurring access, expiry handling or membership-aware content rules. A developer can build those checks with custom roles and code, but a membership plugin is usually safer and easier to maintain for more than one simple private area.
- Should higher membership levels automatically see lower-level content?
- Only if your membership rules are designed that way. Decide whether access is cumulative, where Premium includes Basic content, or separate, where each level has its own library. Configure the allowed levels on each piece of content rather than assuming the plugin will infer your tier structure. Paid Memberships Pro supports level groups for both single-choice tiers and multiple memberships.
- Can I restrict only part of a WordPress page?
- Yes, provided your membership plugin supports content blocks or shortcodes. Place the private text, lesson, form or download inside a visibility block and choose the permitted membership levels. This is different from protecting the whole page, where the visitor is stopped before the page content is shown.
- Why can a member still see the restriction message after joining?
- The account may not have the expected level, the membership may be inactive or expired, or the content may be restricted to a different level than intended. Check the member record, confirm the selected level on the post or page, and test again in a private browser window. Do not rely on an administrator session because it can hide the problem.
- Does protecting a page also protect files linked from it?
- Not necessarily. A page restriction controls access to the WordPress page, but a file with a publicly reachable URL may need separate protection. Test downloads by copying the file URL into a logged-out browser. If the file must remain private, use a membership-aware file protection method rather than relying only on the page restriction.