Membership sites (on WordPress) are a really interesting concept, and especially when it comes to finding a unique way to deliver premium content to your audience or customers.
When you look at it, there’s hardly any other method out there that would give you full control over what portion of your content the users can access. For instance, with a standard product or a book, such control is just not possible. People tend to pass around books and other forms of physical products. But in most cases, they won’t pass around their membership site details.
Therefore, the idea of membership sites on WordPress itself is great, provided that you – or the business you’re building the site for – have the right content to share on a membership basis.
First of all, the topic isn’t as easy as you might think. Building a membership site on WordPress is about much more than just installing and activating a bunch of plugins and then hoping for things to take care of themselves.
What really matters here is picking the right plugins that all handle their specific tasks, then configuring them properly, and then creating your membership WordPress content and tying it all together.
So what I’m going to do here is present just that – what membership plugins to choose and how to configure them properly.
The traits of a proper membership site on WordPress
Let’s begin by taking a minute to discuss why WordPress originally wasn’t meant to run a membership site.
Hold on, what I actually mean isn’t that WordPress can’t be used to run a great membership site. I only mean that it just wasn’t meant for that purpose when the platform was originally created.
But we can overcome WordPress’ shortcomings by creating a nice brief and brainstorming over what we really want to achieve with our creation.
Here are some of the details about WordPress that need to be addressed/solved:
1. The lack of proper login forms, front-end registration, or user profile pages in default WordPress.
Okay, I know that everyone can register an account on a WordPress site by going to the site’s
/wp-login.php?action=register section, but that’s not exactly what we want.
So on our WordPress membership site, we need a front-end registration form that looks more like Facebook’s (like it’s meant for normal people) and not like something meant for developers.
The same thing goes for login pages and the user profile pages. While every user on a WordPress site has access to the site’s
/wp-admin/profile.php section, again, normal people might experience trouble finding their way around the admin panel.
2. The lack of additional user roles.
In WordPress, you only get one sensible user role that you can assign to your members – subscriber. But what if you have more membership levels? What if you have more membership programs on the same site? What if you want to give your employees membership accounts?
In the end, we simply need to have a way to create additional user roles.
3. No possibility to set who sees what on the site.
WordPress has just basic password protection functionality and “private content” status when it comes to protecting posts and pages. This isn’t something we can run a good membership WordPress site off. We need to expand on the default content structure by having a better mechanism of setting what content is locked and what is available to everyone.
4. No advanced control over the menus.
Most membership sites publish a lot of content and categorize it in a variety of ways (e.g. based on the availability date, topic, etc.). All this means that we also need to have some form of advanced menu management. Something that would allow us to show certain menu options to specific groups of users and hide them from the others.
Okay, so we have a list of WordPress issues that we need to overcome if we even want to call our site a membership site. So now, let’s discuss one more thing, and that is what type of a membership site we’ll be building.
This is what 90 percent of people need from a WordPress membership site
I guess the best way to tackle this topic – so that everybody can benefit – is to create a standard membership environment that’s likely what 90 percent (that’s a guess, by the way) of site owners need when they’re planning to introduce a membership component into their business.
Therefore, what we’re going to do exactly is the following:
- Create a membership site on WordPress that makes it possible to deliver/conduct an online course. This is the most popular form of a membership site. It gives the site owner the possibility to deliver premium/exclusive content only to those who have joined the site, and not make it available to the general public.
- There’s going to be one main type of membership users simply called members. However, the structure of the site needs to allow us to add other membership levels in the future if needed.
- Members will be able to register through a front-end page, without the need to go into the
- Members will also be able to edit their profiles and log in from the front-end.
- Logging in will be done mainly with email.
- Every member will need to provide basic details about themselves (e.g. first name, last name, country, email).
- There will be exclusive content available to members only.
- Members will see different menu items.
- We need a possibility to customize the emails that new members get when they subscribe.
- After logging in, the member should get redirected to the homepage of the membership area.
Step #1: Getting the plugins
These are the plugins we’re going to be working with:
Current Version: 3.8.5
Last Updated: November 16, 2022Profile Builder – User Profile & User Registration Forms
We’re using the pro version for best results.
After you have them downloaded and activated, move to the next step.
Step #2: Creating additional user roles
Okay, so by default, WordPress provides you with a handful of user roles: Subscriber, Contributor, Author, Editor, Administrator. Those roles are meant to regulate who can edit/access what on the back-end of a WordPress site. However, they are not entirely optimized to work with front-end users (aka. your members), so we need some extra roles.
This is done with the Members plugin. In the
wp-admin, go to Users | Roles and click on Add New.
Let’s call our first role
member, like so:
On the Role Capabilities list, leave just one thing checked:
At this point, you should have the additional role visible in the role manager at Users | Roles:
Step #3: Creating front-end registration and login
This is where the other plugin – Profile Builder – comes into play.
First, let’s go to Profile Builder | General Settings to make sure that the basic parameters are all set properly. Here’s what I went with:
As you can see, I’m allowing everyone to log in with email as well as the username to our WordPress membership site. Leaving this to “email only” could inconvenience the existing users – editors and authors who might have their accounts on the site.
Also, the thing with the passwords. It’s my own choice to go with the minimum of six characters and the password strength being at least “weak.” Feel free to select whatever option makes sense to you.
Next, the Profile Builder | Admin Bar Settings tab. This is what I advise you to select there:
The admin bar is a native WordPress thing, and I just don’t think that members need to see it.
Now it’s time to pick the required profile fields for the members. To do this, go to Profile Builder | Manage Fields.
By default, there’s a lot of stuff there, but I’m going to get rid of most of it by clicking the
Delete link that’s in the last column of the table.
When I’m done, this is what I’m left with:
At this point, we can create our first front-end form – the registration form.
Since it’s WordPress, this can be done through the standard page editing interface, so just go to Pages | Add New and input whatever information you wish (probably a great moment to explain what the user is signing up for).
What I have on my registration page is rather simple:
The shortcode you see there makes sure that whoever registers will be assigned to the “Member” role. The shortcode again:
When I publish this page, this is what it looks like on the front-end (the default theme):
Okay, so now that we have the registration page up, it’s time to display the login form somewhere.
The most obvious placement would be one of the site’s widget areas. So I’ll just go to Appearance | Widgets and use the Profile Builder Login Widget. The config is rather simple:
Additionally, I’m also going to create a custom login page, and place this shortcode on it:
This will take care of displaying the login form on a separate page. (We’ll use that page at a later stage.)
Step #4: Creating front-end profile editing
Although only a handful of users will take advantage of such an opportunity, you need to provide a way for the members to change their information. This is where the profile editing page comes into play.
Again, let’s go to Pages | Add New and create the profile page. My profile page is yet another very simple creation. The main element on it is this shortcode:
I also do some adjustments inside one of the custom blocks visible below the page’s main editing field:
This will make sure that only members can edit their profiles.
The actual form for editing the profile looks very much like the registration form, so there’s not much to talk about here.
Step #5: Creating locked content
The core of any membership site on WordPress is obviously the content that’s available exclusively to the members.
Just as a demonstration, I’m going to create one page that’s going to be my “Membership Area Homepage” and one page acting as a sub-area. Simple stuff … everything done through Pages | Add New. The only thing I have to do when it comes to access control is select the right box in the Content Permission box (see the image above).
Of course, how wide or how deep you want to go into the concept of membership content is up to you. WordPress and the plugins we’re using here can handle whatever size of your membership area. The reason I’m creating just two simple pages is that it’s enough to demonstrate how things work.
Step #6: Creating a custom menu
The next step on our list is creating a custom menu that’s going to display all of our membership links.
However, instead of making it a simple menu, we’re actually going to display certain links based on the membership status of the person currently viewing the site. Cool huh?
This is where the last plugin comes into play – Nav Menu Roles.
The fun starts in Appearance | Menus.
Create a menu normally and call it, say,
Members Area. Select all your membership pages and add them to the menu, like so:
Now the fun part – making the subpages available based on membership levels.
When you click the down arrow next to any menu item, this is what you’ll see:
Those additional settings allow you to assign any level of access based on the user’s membership status. Here are my settings for each of the pages:
- Membership Login: Display Mode – Logged Out Users.
- Register: Display Mode – Logged Out Users.
- Edit Your Profile: Display Mode – Everyone; Access Role – Member.
- Membership Area Homepage: Display Mode – Everyone; Access Role – Member (plus the roles of Author, Editor, Administrator).
- Other Membership Section: Display Mode – Everyone; Access Role – Member (plus the roles of Author, Editor, Administrator).
Once this is done, let’s add the menu to the sidebar and see what it looks like. Here’s the default version – no one logged in:
And with a member logged in:
Step #7: Customizing email messages and redirects
In order to make this step work, we’re going to have to enable some additional modules in the Profile Builder plugin. This is done in Profile Builder | Modules. Particularly, we will need those:
First, customizing email messages.
Why this is done? The reason is simple, we just don’t want standard, “Welcome to my site” emails when someone subscribes. Customizing those messages is a must-do to give your members a really optimized experience and make them feel welcome from day one.
So to make this happen, go to Profile Builder | User Email Customizer.
This section allows you to customize messages for different registration scenarios, like: default registration, registration with email confirmation, registration with admin approval, user approval notification, password reset email, and a couple more.
Next, let’s take care of the redirects that happen after certain actions performed by the members. This is done in the Profile Builder | Custom Redirects section.
There’s a lot of interesting things you can do there, but I’m just going to experiment with the following:
Here, I’m just setting a basic “after login” redirect that will take the member to the Membership Area Homepage.
And the other part:
Here, I’m taking care of the default WordPress login and registration pages. What this does is it redirects anyone who tries to access
wp-login.php. This is a nice touch to protect your WordPress back-end.
This pretty much closes the scope of our membership site demo. But hold on …
What about the teachers?
As you can see here, we’re not focusing on the content creators much. I think that this part of the job is still best done from within the wp-admin. Most of the time, the majority of the work is going to be handled by one person/administrator anyway.
So that’s it! At this point, our membership site on WordPress is complete and ready to welcome some new members.
To be honest with you, I was getting into this whole process curious if I could truly create a functional membership site with WordPress plugins, no outside help and just by going through the settings and optimizing things along the way. But very soon, I became truly impressed with the abilities of those three plugins and how functional the final product would be.
I mean, all those forms, redirects, content locking, and etc. Those features really are all you need to build a truly quality membership site for your people.
But hey, that’s just my opinion. So what do you think? Are membership sites something that you’re either willing to test yourself or offer your clients?
Don’t forget to join our crash course on speeding up your WordPress site. With some simple fixes, you can reduce your loading time by even 50-80%: