WP-Members is a free plugin to make your WordPress® blog a membership driven site. Perfect for newsletters, private blogs, premium content sites, and more! The plugin restricts selected WP content to be viewable by registered site members. Unlike other registration plugins and WordPress® itself, it puts the registration process inline with your content (and thus your branded theme) instead of the native WP login page. WP-Members works “out-of-the-box” with no modifications to your theme, but it is fully scalable for those that want to customize the look and feel, or want to restrict only some content. It is a great tool for sites offering premium content to subscribers, and is adaptable to a variety of applications.
Support information
I have been maintaining this plugin for over six years now. Development and support involve countless hours. The project survives solely on donations from users.
If you find this plugin useful, please consider making a donation:
Download the plugin
The plugin is currently maintained at the WordPress Plugin Repository. You may always find the current production version there.
Support documents
The primary support documents I have created are the Quick Start Guide, a visual support document to get you started, and the Complete Users Guide, which documents all of the features of the plugin.
Tips and Tricks
- Customize the Stylesheet
- Loading Custom Stylesheets with wp_enqueue_style
- Customizing the Plugin with Pluggable Functions
- Display different menus based on login status
- Block content in a custom template
- Disable the WP admin bar
- Filter and Action Hooks
- Advanded Filter Hook Demo
There is a difference between Posts and Pages in WordPress. If you use WP primarily as a CMS using pages for content, you should review this post:
Translation and Localization
If you are using WordPress in a language other than English, the plugin has been adapted for localization. A POT file and existing translation files are available.
Plugin Name
This plugin has been named WP-Members since its public introduction in 2006. Back then, it was the only plugin doing what it does. Since then, there have been some commercial plugins that have hijacked the name. I have released some statements with information regarding the name:
- Statement regarding the use of the name wp-Member by SmartMediaPro
- Statement regarding the use of the name WP-Members by Others
Upgrade Information
If you are using a 2.x version of WP-Members, I make every attempt to make sure that the plugin can be upgraded via the WP admin panel. If you are one of the users still out there using version 1.x (and I really can’t imagine there are any left), there is a migration script for you to make the leap to 2.x.
For more information, or to download the plugin, visit wordpress.org/extend/plugins/wp-members.
Blog Posts on WP-Members:
[ More » ]


How do you get to the members area page? I created a members area page, with the shortcode for it, and the page works. I put the URL of the page into the WP-Members Settings Option page in the Members Area URL: field. There is no link to it in the WP-Members Sidebar Widget.
Hi Dale – the sidebar widget only uses the Members Area link for the “forgot password” link. If you want to add a link into that widget, you could use the wpmem_sidebar_status filter (action and filter hooks are discussed in the Users Guide). But more common would simply be including the page in your navigation menus.
Hi Chad,
When I have the WP-Members plugin activated and I log out (as an administrator), I’m unable to log back into the site at all and have to de-activate the plugin using phpMyAdmin in order to return to the dashboard. Then if I activate the plugin again it will work fine until I log out and find myself completely blocked from the dashboard again. I’ve been really loving this plugin except for this part. Any thoughts? Could it have something to do with having the wp admin bar disabled for non-members?
Thanks!
Meghan
If you are using moderated registration, you need to make sure that the admin accounts are activated as well.
Thanks! That seems to have worked!
hello! I need the login page with the WP-login box to redirect to a certain page after login. I have tried editing the w-members-core.php to redirect and editing the functions file with no luck. The login page is: http://www.ual.morriscreative.net/?page_id=74
please help!
I would say DO NOT edit the core files. If you do that, you will simply overwrite your changes when you upgrade. That goes for any plugin, not just this one. WP-Members is designed to be very exstensible. There are instructions to do everything that it can do in the Users Guide.
What you want to use for this is the login redirect action hook wpmem_login_redirect (outlined in the Users Guide and discussed elsewhere on this site). An example would be to add this filter call and function to your functions.php file
add_filter( ‘wpmem_login_redirect’, ‘my_login_redirect’ ); function my_login_redirect() { return 'http://yourdomain.com/your-page'; }I am have some issues with the latest version of Wp-Members. When creating the members area page using the correct shortcode I get a page like this http://devnet1.com/awake/members-area/ where the shortcode is displayed on the page along with the log-in or sign-up form. I want to know how to get rid of the shortcode being displayed. This also happens on the register page as well. Any ideas.
This only happens when you are NOT logged into the blog. When you are logged in the page appears fine without any shortcode being displayed.
Is there more than one shortcode on the page?
If pages are blocked by default, is this page unblocked?
Are there any other plugins installed that utilize shortcodes?
There is no other shortcode being used on the page. The page is unblocked. And there are a number of other plugins installed that utilize shortcode and custom fields. These plugins must remain untouched and installed.
I was just hoping you had come across this before and possibly had an easy fix.
You may need to test with the other shortcode plugins deactivated to see if there is a conflict. WordPress runs the shortcode engine only once, so if a given shortcode is rendered earlier in the process than the WP-Members shortcodes and does not continue the process with
do_shortcode( $content ), then any shortcodes that after will not be rendered.I was able to fix it using the following shortcode instead
in the HTML area of editing the page. The same worked for the members area.That will work for now. But I would recommend tracking down exactly what the cause is. Those legacy shortcodes are scheduled to be removed from the plugin in an upcoming version.
Having issue after user registration using version 2.7.2. The following message shows on top of the confirmation (congratulations…) registration page. The error is: “call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘Array’ was given in …/wp-includes/plugin.php on line 405″.
Please advice.
I have a temporary solution. After some debugging code I added to line 405 of plugin.php i found out that the function call -> call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); on line 405, expects a function name on the first parameter of functions, instead $the_['function'] contains an array which causes the problem: Array ( [function] => Array ( [0] => [1] => updateProfile ) [accepted_args] => 1 ) . As a temporary solution I added a check prior to that function call to check if $the_['function'] is an array, if so dont execute the function call to call_user_func_array. The error then goes away. Of course this is only a temporary solution as I dont like changing WP core files.
Are you using any of the WP-Members action hooks during registration?
Chad,
Thanks for you quick response.
I’m using wp-members as is, not changes to the core code files. My settings are as follows:
Notify admin = Yes (clicked)
Use reCAPTCHA = Yes (clicked)
Members Area URL: a valid url
Register Page URL: a valid url
Everything else is un-clicked. I do have additional fields on the fields tab.
The area you are getting an error is in WP’s do_action function, which is the engine for action hooks. Since you are not using the WP-Members action hooks in the registration process, it seems unlikely that’s the source of the error, as to get to the point of the function that is breaking down, they would actually need to be used.
I would suggest testing with any other plugins deactivated first to see if you still receive that result. If not, bring plugins up one by one, retesting each time to see if you can isolate where the conflict might be.
Chad,
Thanks again for your quick response.
I will take that approach and see what I can come up with.
The current hack to check for array and bypass the function call, if function name is an array, work nicely and the registration process completes normally.
By the ways, I can not thank you enough for this plugin. We are going to use for a non-profit organization and it does its job very well.
Regards,
Roberto
I should like to be able to modify the list of users shown under Users > WP Members > WP Members Users, so that it displays other fields than those natively offered. I have some custom fields it would be nice to be able to display and it would be good to be able to switch those on and off – a bit as is possible with some fields in the Users > All Users display. Is there a bit of code/filter tinkering that might help me with this, please?
Updates to that process are on the project list. I expect to make the fields that are show on that screen customizable. However, I don’t have an ETA on when that will be worked in.
The functions dealing with that are in wp-members-admin.php and are in the section for Bulk User Management. While you can tinker with them to suit your needs, be aware that there is more than one function that would need to be modified and, as these functions are not pluggable, any changes would need to be reapplied in an upgrade.
Many thanks for your prompt and , as always, helpful reply.
Ever since I updated the plugin from around late January this year I stopped receiving email notifications of new user registration (new users registering in my site requires admin approval). Would be nice to have this feature working again, so I can immediately activate new members who are qualified to access my site.
If you have not upgraded to 2.7.2, you should do so. This is likely your issue: http://butlerblog.com/2012/01/23/wp-members-2-7-0-email-issues/
Hello experts.
I am a new user. So please help me. I want to show my posts to everyone. But when anybody tries to make a comment he/she must be registered. How can I do so? Currently my posts are not viewable to everyone. When anyone click on my posts, they view the page of registration page powered by WP-Members. But when I allow everyone to view the post they can view it and if they want to reply, it shows the log in page of wordpress. But I want to show the registration page of WP-members here.
Anybody will help me?
The links that you are referring to are part of your theme’s comments.php file. You can update accordingly, or set up some type of redirect.
Thank you very much for this wonderful plugin that even a non-developer like me could put together and activate. I also managed to add moderating for each registration.
Only, I’m now left with a pesky little problem of double-registrations (on the part of some subscribers who couldn’t wait for me to moderate their original registration before adding another one). Their successive registration may have a slightly different email address but I can see they’re the same person. I wonder how I could delete these entries (and also rejected applications that no doubt will soon pile up).
You can delete users via the WordPress users list under Users > All Users.
Also, I would suggest that if you haven’t already done so, you should adjust your successful registration message and also the content of the initial email to indicate that registrations need to be approved. This may help cut down on the number of people that double register.
Thank you so much Chad. That makes life a little bit easier.
I have changed the registration text to include the moderation procedure but I guess some of them just don’t read them these days..!
Hi!
I was wondering if there is anyway to remove the text block
” New User? Click here to register ” since their not allowed to register anyway.
I’ve found the textblock “wp-members-dialogs.php” but when removing it nothing happens.
And a second question, I only want the Login-box to show on the user admin site before loging in but at the moment the text-blocks on my page are showing as well.
That text only shows if you have set a registration URL in the plugin’s settings. So my question would be, if you are not allowing users to register, why would you put a url into that setting? I would also HIGHLY advise against making direct edits to any plugin unless absolutely necessary. When you upgrade the plugin, your changes will be overwritten. If you look at the development of WP-Members, you’ll see that the plugin is actively maintained and there are frequent updates. Some of these are new features, but some are fixes and security issues, so it’s important to be able to stay current with the releases.
On the second question, you’re going to need to clarify.
hello, thanks for your plugin! is there any way to add a “logout” link without using the whole sidebar widget?
The simplest method is to have a link to http://yoursite.com/?a=logout
Hi Chad,
I have a question…
How do I know if subscribers added by signing up through WP-Members to my wordpress site are getting notified of new posts on the blog section of my site?
Also, on the custom email settings, is it possible to add an image to the email?
I appreciate your help with these questions.
Thank you!
-HENRY
Henry – your first question is a fairly open one. WP-Members does not manage anything in that regard, so it depends on what you are using for that. I would say start by having a test user for yourself and monitoring that.
On the second point, at this time, the email is plain text only. I may add html in the future, but that’s TBD.
Thanks Chad for this useful extension. It seems to work well… except that lately people who want to register seem not to receive the email message with their password. I’ve tried for myself, and the message never arrived. It worked OK for earlier users, though. I’m using version 2.7.2 with WordPress 3.3.1. Where could the problem come from?
Verify that there is content in the emails in the email tab of the plugin settings (see: http://butlerblog.com/2012/01/23/wp-members-2-7-0-email-issues/).
Thanks Chad. But my issue is another issue than the one pinpointed in your article. My issue is that new users don’t receive the notification with their password after registering. I’ve updated my “email” section however.
If users were not receiving email notification, that is exactly the problem outlined in that post. By “updated” your email section, do you mean that there was no content in the emails? If so, that was the problem. If you checked the this and there was in fact content in the email settings, then your issue is probably with wp_mail, the WordPress function that sends email.
Awesome plugin,
But if i just want to manage members to be as subscribers only. will this plugin help me ? also the users will able to upload their images ?
please reply, thanks in Advance
Yes you can manage them as subscribers only. No they can’t upload images via anything in the plugin but that doesn’t mean they couldn’t via some other process (also, WP already has gravatar capability built in).
Thanks for the plugin. It looks really wonderful from the description!
There’s only one thing: I just can’t get it to work. There’s no ‘Register’ link on my login page. I’ve unchecked the WP ‘Everyone can register’ as your guide told me. I’m kind of a noob on this, so sorry if this question is the dumbest you’ve ever seen
There are three optional pages you can set up: login, registration, and members area (for updating registration data and resetting passwords). IF you set up a registration page and/or members area, AND you set the location (URL) of those in the plugin’s settings, there will be a register link and a forgot password link in the login forms.
A login page and registration page are really very optional because the plugin already shows these two forms to users in place of blocked content.
Thanks for your reply.
I’ve now created a page with [wp-members page="register"] in the body and copied the url of that page to the plugin’s settings. I also unchecked the block posts and block pages for sure. The registration link is not showing up though. Do you have any other suggestions? And how do I make the registration fields appear on the registration page?
I think I’ve figured it out already. There was a conflict with another plugin.
So I can’t make a link to your registration form on the WP login page? Do I understand this right?
You can’t make the plugin put the registration form on the wp login page, that is correct. But you can certainly use that by adding fields to the WP login page registration process to match what you are using for registrations. You would do this using the register_form hook: http://codex.wordpress.org/Plugin_API/Action_Reference/register_form
Thanks! I’ll try that.
Great support.
Been running this plugin for the past week, and it has been running perfectly. Thanks once again for this wonderful plugin.
Now to a teeny little problem… I wanted to make a post (both topic and article) that’ll be visible only to members after logging in. So I added the custom field ‘block’ and gave value as ‘true’. But for some reason the entire post and topic is showing anyone visiting. Have I missed something?
The plugin will show excerpts (and titles) on archive templates (such as category, tag, or monthly archive pages). If you are not using the ‘more’ tag for posts, then you’ll just be showing full content in these areas.
If I understand you right, you’re saying it is not possible to mask complete posts – only excerpts.
If that’s the case is there a way I could make a whole page visible (e.g., a members welcome page) only after they log in? Non-members shouldn’t even know that page exists.
My WP-members options have ‘show excerpts’ in posts and pages checked. Because that is how I want my posts to appear and I have no problem with that. Thanks for the help.
Check this out: WordPress Access Control Settings in the WP Plug-Ins repository
I’ll try this out. I hope it doesn’t clash with WP-members. Thanks for the tip Michael. ..
I use both plug-ins on one of my sites and they co-exist quite happily. But post back if you have any issues – if I can help, I will.
Both are running fine, thanks for the help Michael. I could even use it as a members-only post, and even if non-members can see the title, to read the article they need to be logged in.
I’ll try again on this.
The military-related organization I’m affiliated with has 2,500 (+/-) members. Dues are payable on an annual basis. In addition to our paying members (some of whom are delinquent on their dues and some are not), we have a small number of ‘comped’ members (local/state/national politicians).
At present, we have the current months newsletter along with the past five months (total of six months) on the website. We also produce an annual members directory which is mailed to all current members.
What I’d like to do in restrict the current month’s newsletter and the member directors to dues-current members.
I’ve never done a website that included a restricted access page, so I’m at a loss as to whether WP-Members will work for what I need. From what I’ve read, the plugin generates the unique member’s password and e-mails it to them, so that part is not a problem. Where I’m stuck is:
1. but how does the plugin determine whether an individual is dues-current or not?
2. how do I handle a member who goes delinquent?
3. would I be better off having the current month’s newsletter and the directory listed on the main page, which means a member would have to login for each, or should I have a menu link to a ‘Members Only’ page with the newsletter and directory both on that page?
4. will WP-Members handle the number of members we have?
This is kinda’ long-winded, but I want to explain as much detail re: what I need.
Thanks,
Dave
Dave,
The best thing for you to do is review the Users Guide and test out the plugin. As far as your specific questions:
1. Custom fields can be used for admin use only, I would set a custom field for this. However, validating this wouldn’t necessarily be automated.
2. Depends… users can be deactivated.
3. Depends… However you want to do it. Only one login is needed, though.
4. Yes.
Chad,
Thanks for the quick reply.
I’ve got some “honey do’s” starting me in the face and as soon as I get them completed, I take the plugin for a trial run.
Dave
A thought just cam to mind. Can I set up our membership person so that he (and I as Admin) can both add a new member and deactivate a member that goes non-current? I would want to restrict his access to only that area.
Dave – I run my site this way – but you’ll need an additional plug-in such as User Role Editor to accomplish this. What I did was to make a new role, then put my user into it as the only member and allocated him specific capabilities. TBH, WordPresss isn’t the best at handling membership-driven sites (it wasn’t originally designed for this, so no great surprise) so you will need to add on a few bits and pieces to get things working the way you want.
That’s good stuff – thanks Michael!
It’s possible that if you use a role manager and assign user management roles to a specific user (or a specific role) that might work. I’m not 100% sure as I have not tested that out myself.
Chad/Michael,
Thanks for the good suggestions. They are on my short list of things to do as soon as time presents itself.
wHY EXISTING USER LOGIN OVERLAPPED
http://bharaghar.in/registration
I’m working my way through the Users Guide so that I can test WP-Members and I’ve run into something that is puzzling. On my ‘Members Only’ page the phrase “Hey Dude, phones ringging.” appears about the page name, below the menu at the top of the main content area.
Any thought as to where this comes from and, more importantly, how I get rid of it?
Thanks
It’s not from the plugin…
Okay, I’ll keep digging.
is there a screenshot image to use this plugin? I still do not understand
What is it that you don’t understand?
Hi !
I’ve been playing with your plugin, and I first want to congratulate you on the work done here !
I’ve been able to use the hooks to integrate this with mailchimps lists and do some other good stuff.
There’s one thing I’m missing: the ability to redirect the user to the page he was on after registration.
example:
User on blocked content – login form is displayed (in my template, via do_shortcode() )
User clicks on the register link
He registers
But then he is redirected to the home page (or some other page).
Any idea on how I could redirect the user to the page with blocked content he was viewing ?
I’m thinking of a few different solutions (like settings a new php session var and reidrecting via the register action hook)…
Any idea for an elegant solution ?
Chad, WP-Members is fantastic! Thank you ! I have a (hopefully) quick question. I have a registration / edit account page; just an empty page with [wp-members page="register"] in it.
At first I referenced no css url in the settings field in WP-Members setting, but the form looked terrible. Using the WP-Members documentation I changed the setting to point to wp-members-kubrik.css. The form looks much better, but the entry fields are all shifted down one line so that “Last Name*” lines up with the entry field for First Name, Address 1 lines up with Last Name, and so on. I’m not a css guy so not sure what to look at to fix this or if its a bug or what. Any ideas?
Also, I did try to turn on “Use Legacy Forms” in WP-Members settings, and I like the result, but then the Login form on the sidebar becomes all jumbled, misaligned and looks awful. Obviously I’d like to stick with the css approach so trying to fix the registration/account css to work. Thanks for the help Chad.
First, I would suggest avoiding the legacy forms if you can. They will be deprecated in the 2.8 release. They are table based and much less flexible (although they do have limited CSS properties).
Either way, you’re going to probably have to learn some CSS (or hire someone) to make things look seamless with your theme. With the vast number of theme’s out there, there simply is no one-size solution. Consider the included stylesheets a starting point for what can be done.
Here is where you want to start: http://butlerblog.com/2011/07/25/customize-the-wp-members-stylesheet/
A good thing to remember with customizing the stylesheets – you can’t really break it. It is simply layout, not functionality.
Also note, you can do more than just tweak what is already in there. You can add property definitions as well (and depending on your theme, you may find you need to). I find that using Firebug (http://getfirebug.com) helps track where properties are coming from. That way I know if I need to add a property definition or not.
Thanks for the quick response, Chad. I’ll give those suggestions a try.