Complete Tutorial: How to Build a Membership Site on WordPress

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.

In this guide, we’re going to cover all the ins and outs of membership sites and how to build them on WordPress. We’re going to proceed through the whole process step-by-step, right from a blank WordPress site to a fully functional membership WordPress site.
Bonus info: Get the list of 10 tools we use when designing for WordPress that cut our work time in half (by the way, 7 of them are free). Click here.
Complete Tutorial: How to Build a Membership Site on WordPress

The overview

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.

“Wait, what?!”

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 wp-admin.
  • 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

Note. The solution presented here includes a mixture of plugins. Two of them are free, and the third one is a PRO version of a free plugin available in the WordPress directory. To get the full functionality that we’re discussing here, you’re going to need that PRO version. If you just want to get started, however, and learn how to launch a functional membership site on WordPress, the free version will do as well.

These are the plugins we’re going to be working with:

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: read.

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:

[wppb-register role="member"]

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.

Please note that with the current setup we’re not discussing how to handle payments or otherwise build your site in a way that would allow you to charge your members for taking part. Right now, anyone can sign up once they fill out the registration form.


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?

 And last but not least, don’t forget to join our newsletter to receive other unique resources just like this one. You know what to do: 


Karol K

Creates content, manages CodeinWP's team of writers and makes sure that every piece of content you see on this blog looks great! / Author of "WordPress Complete" / Professional yerba mate drinker / @carlosinho
  • Rafael Echeverria

    whats the best option for adding custom post types from here?

    • Not sure I understand your question. Custom post types already work with the plugins described here.

      • Jonathan Asbell

        Hey Karol. Great article and look how old it is!!!! how do you approach the directory structure?

  • Instead of all this, one should try Ultimate Member WordPress plugin!

  • The title of this guide was attention grabbing enough to take me here and the the killer headline backed by awesome content. Loved it.

    Awesome tutorial. I would like to create a membership kind of site and this guide is gonna help me in this. thanks for sharing 🙂

    • Feel free to share your results afterwards. 🙂

  • Loved the post, but of course there are so many other ways to build membership sites.
    Time ago, I purchased Premise from StudioPress, I used it for landing pages only, but it’s great for creating membership sites too.

    • Sure, that’s true, but Premise has its price tag. 🙂

  • Abhijeet Patil

    the post was awesome , it helped me lot , but can u pl explain me how to build a membership website in wordpress that can accept payments easily in short time as this above post ?

    • You’d need to set a separate payments mechanism that would operate on sign-up. We’ll cover this topic in one of the updates to this guide, or in a completely new one.

      • Parcye

        Did you ever get round to doing this?

        • Olivier Coq

          I was wondering the same thing…

          • Raquel Gonzalez

            I’m also keen to see this – would a payment mechanism work in conjunction with the above guide. i.e. register for membership, and before they can view members area a (yearly) payment is required?

  • Honestly, my first time to read a complete tutorial on how to build a membership site on WordPress. The good thing that this can be done also in free version of WordPress. In case one will just try it; they can use the Free version of WordPress.

    The systematic guide is clear, simple, easy to understand and well-written. Interested people can follow the steps easily I must say. This is meant for newbie’s.

    Creating a membership site will benefit you and the members, since the site is exclusive from them only. Marketers can use this on their business, however, they need to know first if they need this kind of set-up.

    • Thanks! Membership sites can be beneficial in a lot of scenarios, and thanks to WP, we can launch such things even for free.

    • На Идори

      Nicely done.

    • Spider Jerusalém

      Just as a note, wordpress itself is entirely free. The plugin has a paid option, wordpress doesn’t.

  • Cynthia V. Anderson

    Fabulous visuals with the step-by-step. How did you get the header of this post (the pencil) mirror the movement of my mouse?

    • Is a custom javascript for some parallax effect, in case you didn’t noticed it changes based on day/night 🙂

      • Cynthia V. Anderson

        Changes day/night?! Neat O!

  • Gary

    You also might want to look into First Click Free from google, or a leaky paywall so that your paid content can show up in Google.

  • Nikki van Zanen

    Sadly enough the nav menu roles doesn´t work with the newest version of wordpress and hasn´t been updated for 2 months.

  • Hi Karol,

    Thank you so much for this post! It helped so much! I only have one question: I would like members to be able to: 1) publish posts (but only to one specific category!) and 2) submit pending posts (for all the other categories–so we can approve or decline).

    And ideally, I’d love the memebers to be able to do both on the frontend. Any ideas on how to make this work?

    Thank you so much!


    • Scratch that. I was able to do it through USP forms. Now the only problem is that I want to: 1) create a “my profile” page which takes a user to their author page (but I can’t seem to find a link for that anywhere) and to 2) create notifications so that logged in users can see who is commenting on their posts.

      Any clue on how to do that? Thank you!

  • James sparling

    Does anyone know a way of adding an existing membership to this? We are working with a client who has 2500 members and we want to give them access without them having to register from the beginning. We just want to be able to email them their login details and there they are. Also does this solution allow members to alter their details, password, email etc?

    • Sabarudin Hashim

      What you need is a dedicated membership plugin that allow bulk add members. I use Digital Access Pass – an old warhorse in the membership plugin scene but it works. There are other plugins out there with fancy features & aesthetics, unfortunately for me, they always trip at the last mile – support. Fair warning : It has a bit of a learning curve.

  • Jay Galvan

    How come when users register they get an oops you need to register and login page even though it acknowledges they are logged in

  • Jay Galvan

    So following your instructions step by step, my members registration wont acknowledge or allow anyone to create an account, and the few times it has let someone create an account it wont grant them access to the member area. Any advice?

    • Make you include the role new users get with the shortcode [wppb-register role=”member”]. Also, to allow users to register for your website via Profile Builder, you first must enable user registration. Go to Settings -> General tab, and under Membership make sure to check “Anyone can register”.

  • Joe Chiu

    Thanks for the article. As part of my membership site, I want the ability to grant access to only those who are clients of my consulting services. I’m basically trying to create an online course for my clients where they can access it via logging in. Even though the content is free for my clients, I do not want others who are not clients of mine to gain access to the membership site simply by registering. How can I restrict this free content to my clients’ only? Thanks!

  • annalisa

    Hallo, that was a really usefull guide, thank you very much! I still have an issue, If I put a “post by category” widget with protected posts, they are still available to everyone by the link in the widget. How can show “post by category” widget just to members?
    Thanks from Italy!

  • donnymcfar

    My question is, how would I go about building a website where information is drip fed to the members dashboard on a weekly basis. Every member would be receiving the drip feed based on when they registered. What I mean is, they all need their own individual dashboard??

  • Build the membership on the cyber and internet. It is the controlled for all good and vital terms. It is the range of the good and finesse. It is enough for all successive and timely production.

  • jlb.

    Hello! Thank you so much for this tutorial, it’s been amazing for me. I was hoping you might be able to answer a few questions….I’m getting hung up on the admin approval aspect. I’m using Profile Builder Hobbyist and can’t seem to receive any emails as an admin nor as a fake user (I’ve tried creating a few members with other emails….I’m able to approve them on the backend, once I view the members, but never received any emails). Any advice would be great. Thanks!

  • ValleyJim

    I know this is a relatively old article but I have a question about permissions. I have a forum, general, that I do not want people to post to. But I do have two topics in the forum that I DO want people to post to. Basically I do not want them posting in the root of the forum just to the topics it contains.

    So I set the permissions for the forum where no body has permission to post there and by doing that they cannot post to the topics even though I selected discussion in the page settings.

    Is there an easy way to accomplish this that I am just missing?



  • Guitar and Music Institute (Gt

    This was a really good article. Concise, clear and informative. Many thanks for taking the time. A great help for anyone looking to create a membership website. We have our own online guitar lesson website utilising this method and it works great.

    • Bob

      Can you post a link to your membership site so i can take a look at it? thanks bob

      • Guitar and Music Institute (Gt

        Thought I had put a link up…must have cut it out Bob. Can you google search “Guitar & Music Institute” and you will get our site. All the best. Ged

        • Bob

          wow – GREAT looking website … hope it’s going well for you!!

          • Guitar and Music Institute (Gt

            Thanks Bob for your kind remarks. Yes, the site is really starting to take of with a lot of traffic now coming its way and engagement etc.

  • Ayatollah Waheed Saeed

    One thing I still dont understand is, does this plugin allow the user the click on an email to activate the profile just created?

  • Tim

    I have a questions. Is it possible to dump all my new members email addresses into a mail poet wordpress plugin? That has always been the most confusing part since all these membership plugins have their own places to store data, how do I get it into mail poet seamlessly.

  • surja

    Any resources for coding a membership plugin from scratch? Would a useful learning experience 🙂

  • Stephen Djes

    Extremely explanatory. Love the good work.

    I’ve never read a tutorial as comprehensive as this.

  • thanks for this detailed article. how can we combine this steps with woocommerce enabled site, so we could avoid two times registration? (one for wordpress one for woocommerce)

  • Great tutorial!
    One question though: how do I display a Sign Out button?

    • Thiago Pinheiro

      Hey there, Razvan Zamfir!

      By this time you’ve probably already solved it. But anyway here’s how I did it:

      At the menu creation part you can creat a custom link. The text could be “Sign Out” or anything you’d like.
      The URL should be like this:

      http:// [your-website] .com/wp-login.php?action=logout&redirect_to=http%3A%2F%2F [URL-you-wish-to-redirect] &_wpnonce=5da9550674

      Obviously you must replace ”[ these-parts ]” with your own URL’s and cut out the “[ ]” and blank spaces.


  • Shafiq Ssekitto

    i am impressed

  • Sheena

    Hello, thank you for this. It has helped with building my site so far.

    I wondered if you can help with the following:
    1. Do you know what the minimum requirements are for a new ‘member’ to register? I have tried testing this, but keeping getting an error message that the password must meet the minimum requirement and not sure what this is.
    2. Is there a way to stop all ‘members’ from accessing the dashboard in wordpress? I have inputted the custom link for redirect once they register as listed but cannot test yet(due to the password issue) if the ‘member’ is then restricted from viewing the dashboard.

    • liseetsa

      Both of your answers are discussed in the tutorial. Read again. Change setting for the password requirement and “hide” dashboard from members. Good luck!

  • Kelly Drewett

    Thanks so much! Helped a lot, Kelly

  • Brandon Jeffers

    Hi i dont see the modules link in my wordpress

  • Lyonezz Candi

    I really thank you for this post. It is exactly what I was looking for. The tutorial was in conversational format that makes the reader feel welcomed, while learning some powerful content. Peace

  • monster_cookie

    Have you done a recent updated version of this guide? And, do you have a guide for how to develop this same membership but membership with paid subscription and how to accept the money part (payments)?

  • Brandon Jeffers

    Hey Bro Bro thanks for the awesome training, i have a problem tho, some of the links in the profile builder i dont have in ine

  • Cassie Hubbell

    can this be done with a free wordpress website/blog? Or does it require for someone to actually buy a membership & download the actual wordpress software? Thank you for this article, its extremely helpful & is done in such a way that reads smoothly along with the step by step detailed process A REAL PLEASURE TO READ & COME ACROSS ! ~Cassie

  • Thiago Pinheiro

    Many thanks for the article! Very concise and informative, solved everything!

    Just a little tip for those, like myself, who opted not to buy the PRO version of the plugins: To achieve the redirection after login there’s a free plugin called “Redirect After Login”. Really simple to use.

    Once more, thank you veeery much for the tutorial!

  • Jason Schachter

    I am trying to figure out how to add the ability to track some things we currently use an access database for. I just need to track some basic things like events attended, miles, volunteer hours, etc. I am building a website for a non profit veterans organization and I am currently using Ultimate Member for my members area. I would like to intergrate the members and the database with the events calendar as well and be able to show each member how many miles and events they have attended. I also only want certain administrators to be able to add or adjust the database to maintain oversight. Does anyone have any ideas or suggestions?

  • Andrea Madden

    So i could use any template and simply install these plugins to convert it to a membership site?

  • I would like to know all the pieces or steps you need to do in order to complete a membership website.

  • Nick C. Pablo

    Thanks Karol K. I have been contemplating using moodle in a member-based tutorial site but this one saves a lot of time learning the other platform. Cheers!

  • Corey Hensley

    Not sure if someone already asked this on the thread, but what if you want to delete a created profile? More specifically, how does this build give the ‘member’ the ability to cancel/delete their own profile on the front end?

    I am a Web Dev student and my team and I are building website that will have multiple front end users accounts; the site is like Facebook, in that it will allow users to make posts. But we want to give them the option to easily delete their account should they wish it. I went through this tutorial and tested it on our site but there doesn’t seem to be a clear way to delete the test profile I created.

  • Roman Turaev

    WordPress requires a Business membership in order to be able to install any plugin. 🙁

    • Roman Turaev

      I’ve got it. Thank you

  • Thanks for a great article.

  • Nicholas Peterson

    I’m interested in creating an IMDB style site. That will have different types of members – organizational (with an organizational profile) and individual (people). Structurally, organizations would create events and have event pages and the individuals would have worked at the events. In the same way there are actors/creative team/etc. in IMDB. Is this possible?