Plugin Directory


WP-Members™ is a free membership management framework for WordPress® that restricts content to registered users.

  • Patches an issue with the admin notification email update in 2.9.9.


  • Code standards in wp-members-email.php
  • Rebuilt admin notification email to follow new regular email structure with more filters in wp-members-email.com
  • Added $toggle to headers filter that is used in both emails so that headers could be filtered based on the email being sent (i.e. sending plain text for admin notification vs html for others. in wp-members-email.php
  • Added redirect_to parameter as a widget entry in wp-members-sidebar.php
  • Corrected flaws in error checking for adding new fields in /admin/tab-fields.php
  • Added functions for updating user_status in wp_users table in /admin/users.php
  • Fixed get_user_meta 'true' error in wp-members-core.php, users.php, /admin/users.php, /admin/user-profile.php
  • Added dummy comments template to protect comments without post password.
  • Added new action for deactivting a user (opposite of wpmem_user_activated).
  • Added check to remove password, confirm_password, and confirm_email from export (data for these was already skipped, but the field space was there).
  • Added wpmem_status_msg_args and wpmem_login_links_args filters.
  • Corrected Really Simple Captcha, added field wrapper and should not display on user profile edit.


  • Fixed bug in settings update that caused the stored version number to be erased.
  • Fixed bug with new email function that causes the wpmem_email_newreg not to apply any filtered changes to the email body.
  • Major updates to wpmem_block logic, changing to universal _wpmem_block from two separate metas (block & unblock).
  • Fixed bug in the page bulk action that caused the result to end up on the posts page.
  • Added wpmem_use_ssl utility function.
  • Added use of wpmem_use_ssl function to reCAPTCHA to load correctly (previously handled ssl directly).
  • Added use of wpmem_use_ssl function for default input text for custom register page, user profile page, and custom stylesheet settings inputs.
  • Added new redirect_to parameter to login page shortcode.
  • Fixed checkbox for checked by default on the add new user screen.
  • Fixed "admin only" fields to display on the add new user screen.
  • Added underscores parameter to the fields shortcode to strip underscores. Defaults to off.
  • Updated excerpt logic to not show excerpts on multipage posts if not the first page.
  • Added new 2015 stylesheets (currently available, but subject to changes/updates)


  • Fixed comparison for the checkbox CSS class in wpmem_create_formfield.
  • Corrected wp native registration function for use on localized sites.
  • Rebuilt export function, merges the two previous functions into one (export selected and export all) and will allow for calling custom exports.
  • Rebuilt user email function.
  • Added default "from" headers to email.
  • Added new filter wpmem_export_args.
  • Added new filter wpmem_email_filter.
  • Added a redirect_to parameter to the registration form similar to the login.
  • Fixed plugin admin page load for multisite, if user has theme options edit capabilities.


  • Updated admin.js to show/hide custom url fields for User Profile page, Register page, and Stylesheet settings.
  • Updated options panel to show/hide custom url fields mentioned above.
  • Updated admin.js to show/hide checkbox and dropdown extra settings when adding a custom field in Fields.
  • Updated fields panel to show/hide extra fields mentioned above.
  • Updated reCAPTCHA to automatically change language if the language is (1) set as WPLANG and (2) used by reCAPTCHA.
  • Added error checking if Really Simple CAPTCHA is enabled but not installed.
  • Updated registration function for improved operation when used with popular cache plugins.


  • Added support for Really Simple CAPTCHA (Really Simple CAPTCHA must also be installed).
  • Added support for custom field meta keys as shortcodes in emails.
  • Added support for default permalinks when using wpmem_logout shortcode.
  • Improved admin notification email to skip metas defined as excluded meta.
  • Fixed activation function for activations from user profile omitting passwords (see 2.9.4 bug fix for moderated password registration).


  • Bug fix for moderated password registration (changes in 2.9.3 introduced a bug that caused moderated registration to send a blank password).
  • Bug fix for premium PayPal Subscription extension showing expired users, improved user query.
  • Fixed user profile update so that wp_update_user is called only once.
  • Added [wpmem_logged_out] shortcode to show content to logged out users. Same as [wp-members status="out"] shortcode but can be used on blocked content without changing security status.
  • Removed checkbox for adding password and confirmation fields to the User Screen since these are not stored data.


  • Fixed a backend user profile update and create new user issue introduced with some 2.9.2 code improvements. The issue caused the additional fields not to save.
  • Added a confirm password and confirm email field to the default install, as well as automatic form validation when used.
  • Updated all functions that store/read user data to skip these fields as there is not need to store them, they are simply form validation fields.
  • Improved error checking in the admin Fields tab when attempting to add an option name that already exists.
  • Added separate registration validation for multisite (refers to WP-Members front end registration only). Multisite has different username requirements and the existing error message was valid, the wording did not fit well for multisite making it confusing. The multisite validation returns the WP error message rather than a custom error message. I may be updating other validation messages in the plugin to utilize this method (while allowing them to be filtered for customization).
  • Added a separate install for multisite.
  • Updated the template for all localization files (some strings still need translation).


  • Added user ID parameter to wpmem_login_redirect filter.
  • Added new action hooks
  • Added logout shortcode
  • Added wpmem_msg_dialog_arr filter
  • Improvements to registration function
  • Admin panel updates for smaller screens
  • Added bulk block/unblock for posts and pages


This is primarily a cleanup and fix update with a few new features.

  • Added WP-Members registration fields to WordPress Users > Add New screen.
  • Fixed wpmem_test_shortcode error for TOS.
  • Plugin options tab - lists notify address for notify admin setting
  • Updated default password change success message - removed need to re-login string.
  • Make dropdown values in wpmem_create_formfield function translatable strings for localization
  • Changed "logout" to "log out"
  • Update to register function to check for unset values for WP native fields.
  • Moved the path constants to be defined earlier.
  • Added $action parameter to most of the login form filters, allows more direct filtering based on form state (login, password reset, password change).


This is a major update focusing on upgrades to the form building functions, but also includes a number of other changes and improvements.

Major updates

  • New form building functions include new hooks and a more customizable form building process.
  • Form functions moved from wp-members-dialogs.php to new file forms.php
  • Sidebar login form also rebuilt in the same way the login and register forms were changed.
  • Legacy (old table based) forms completely removed in 2.9
  • Updates to error and dialog messages, removed unnecessary html tags

Changes in wp-members-core.php

  • updated calling of wpmem_test_shortcode, now it works like has_shortcode, put off deprecating at this time.
  • updated shortcode to include tos page, allow for new tags (wpmem_field, wpmem_logged_in) (added new shortcode calls in wp-members.php), and accept id attribute for fields. Added $tag argument, can use shortcode_atts_{$shortcode} filter
  • moved wpmem_test_shortcode to utilities.php
  • added new action hooks: wpmem_pwd_change and wpmem_pwd_reset
  • added new filter hook: wpmem_regchk

Changes in wp-members.php

  • a pretty major overhaul of this file. Moved all but four declarations that weren't already in functions into the init function. Only two constants are declared before the function. This initialization comes after the theme is setup, so pre-initilization needs, such as loading pluggable functions can be declared in the theme's functions.php file. Pluggable functions do not need to be loaded only from the wp-members-pluggable.php file.
  • The file name of the wp-members-pluggable.php file is loaded in a filter hook, wpmem_plugins_file, so you could call it something else or load it from another location.
  • New action hooks: wpmem_pre_init, wpmem_after_init, wpmem_pre_admin_init, wpmem_after_admin_init
  • New filter hook: wpmem_settings

Miscellaneous Changes

  • Updates to the html for some of the admin to better fit the new WP admin layout. Old html was compatible, but the new works better.
  • Updates to the options tab to better group options
  • Updates to native (wp-login.php) registration to include require field indication
  • Review of output, localized a few missed strings
  • Implementation of changes in localization of field names. English values are now stored in the db (except for custom fields that would be whatever language the user creates the field as). Fields are then translated when displayed, rather than stored as translated strings.
  • Updated user profile to fix some issues with checkbox and required fields in users.php
  • Updated user export to include wp_users table fields user_url, user_nicename, and display_name fields
  • Code cleanup in wpmem_block function
  • Updated autoexcerpt function
  • New filter hooks for post editor meta box titles: wpmem_admin_post_meta_title, wpmem_admin_page_meta_title
  • Some updates to existing stylesheets
  • Added new stylesheets, including two with non-floated elements. Generic, non-floated stylesheet new default for fresh installs


This is a security update the closes 2 reported XSS vulnerabilities. This update also includes a fix for using SSL with reCAPTCHA.


This is an interim update with some changes that need to get done prior to the 2.9 release. Note: This is the last version that will be compatible with WordPress 3.1. Also, this will be the last version to contain the legacy table based forms. These have been deprecated since version 2.8.0.

  • Added a Twenty Fourteen stylesheet based on the new WP default theme.
  • Twenty Fourteen installs as the default stylesheet with a new install
  • User export fix - the new user export functions from 2.8.7 were inadvertenly incompatible with PHP 5.2.4 (WP minimum requirements)
  • Admin options tab style/layout updates to work better with new WP (3.8) admin theme
  • Moved the plugin's texurize process into wpmem_securify rather than in the form functions. This is going to happen in 2.9, and doing it as an interim update will allow users to test 2.9 with pluggable functions.
  • Added the texturize process to the shortcode function for the same reason as above, plus this runs on the User List extension as well.
  • Made the shortcode function pluggable
  • Improved the auto excerpt function


  • Updated no password reset for non-activated users to use get_user_by('email')
  • Fixed undefined variable $sendback in users.php
  • Fixed undefined user object in wpmem_check_activated function
  • Set a column width for the WP-Members column in the All Posts and All Pages admin panels, load admin.css
  • Added wpmem_admin_after_block_meta and wpmem_admin_block_meta_save actions


  • Upgraded the user export process. Eliminates the need for directly loading an export file as in past versions. This also eliminates the need for wp-load.php.
  • All user management functions that were in the Users > WP-Members menu are now included under Users > All Users. The Users > WP-Members menu is fully deprecated and removed.
  • Corrected some undefined variable notices.
  • New filter for the widget title wpmem_widget_title
  • Further enhancements to the native WP registration. Even though the plugin was intended to put the registration process into the front end of your WP site, there are always users that either (a) prefer to use the backend native registration or (b) don't read or follow installation and usage instructions. So in an earlier version, I went ahead and added the WP-Members custom fields to the backend registration if it is turned on. This version finishes that process with proper support for dropdown select fields, checkboxes, and text area fields. It also cleans up the error checking and CSS styling for that process.


  • Continued updating the stylesheets, this update includes some minor changes to 2010, 2011, 2012, and 2013 to clean up the .noinput class (used in the User Profile update) and the reCAPTCHA area.
  • Added responsive elements to the Twenty Twelve stylesheet (remains the plugin's default)
  • Changed from PHP_SELF to REQUEST_URI for elements where the plugin forms need to post back to themselves and no other URL exists
  • Changed from "siteurl" to "home" for getting the home page link - corrects problems for users who have WP installed in a different directory


  • Improved the Twenty Eleven and Twenty Twelve stylesheets (Twenty Twelve remains the plugin default).
  • Added a responsive stylesheet based on Twenty Thirteen theme.
  • Added a new filter hook for password reset args wpmem_pwdreset_args. This will allow mods for single stage reset (username only or email only).
  • Corrected update_user_meta during registration use the filtered value of the user's IP and registration URL.


  • Fixed a small bug on admin-side user profile that caused checkboxes to not update correctly
  • Added optional small "powered by" attribution link at the bottom of the registration form.


Feature Updates

  • Allows native fields display_name, nicename, and nickname to be removed from the field manager.
  • New filter wpmem_logout_link filters all logout links.
  • Added default registration via wp-login page (backend). This of course can be disabled by unchecking "anyone can register" in the WP settings.
  • Completion of user admin panel implementation. Added screens for non-active and non-exported users.
  • Added a custom column to page/post tables to indicate if a post/page is blocked/unblocked opposite the chosen default setting.


  • Fixed bug in admin/post.php that caused an error due a typo in the selected capability.
  • Applied the patch for the users table custom columns that didn't return non-WP-Members custom column values.
  • Fixed the use of the nonce constant to check if the constant is defined.
  • Applied patch to the utilities file that left some debugging code artifacts in the 2.8.2 release.


  • Updated dashboard widget to either superadmin or not display for multisite.
  • Added a div tag to the "Required Field" text in the registration form - NOTE: if you run any filters on the registration form, you may need to test them and update accordingly.
  • Updated the included stylesheets for the addition of req-text class for the "Required Field" text in the registration form.
  • Added Portugese translation files (Thanks Joana!)


Feature Updates

  • Added WP user fields user_nicename, display_name, and nickname to the $fields array, defaults to $username for backward compatibility.
  • Updated field manager process to allow user_nicename, display_name, and nickname to be added via the fields manager as WP native fields
  • Added wpmem_register_data filter for $fields to allow filtering of all fields prior to new user insertion, including above new fields (added updates to registration function to make better use of the filter).
  • Added wpmem_pre_validate_form for $fields to allow filtering fields prior to default form field validation.
  • Begin implementation of moving bulk user management features into Users > All Users. Users > All Users screen can now activate and export users, and will show additional fields as selected in the fields manager.
  • Added wpmem_admin_profile_heading, wpmem_admin_profile_field, and wpmem_admin_profile_update filters. These filters are all part of the user profile section.

Fixes, Patches, & Code Improvements

  • Fixed the conversion of update-profile to members-area shortcode. The bug renders all page shortcodes as members-area.
  • Fixed the activate user process for user defined passwords, a bug from 2.8.0/2.8.1.
  • Fixed a bug that can cause the sidebar login widget to not post to the correct url when a static front page is used.
  • Fixed user profile update (updates with custom checkbox don't stay checked), an issue from 2.8.0.
  • Patch correcting the front-side registration form nonce. This patch should improve reliability while still using nonces for security.
  • Patch for the dropdown field for users running < PHP 5.3.
  • Made front-side nonce optional, defaults to off.
  • Moved utility functions out of core.php to utility file utilities.php.
  • Moved the location of the wpmem_email_notify hook so the filter comes after shortcodes are parsed.
  • Updated the registration function to rely on the values contain in $fields, allowing for the array values to be filtered.
  • Updated the registration form to accommodate registration function updates.
  • Improved auto excerpt function screens for unclosed common html tags and provides a closing tag if none exists.
  • Improved export process to wrap fields with double quotes - fixes issues if field contains a comma.


Security update release: 2.8.1 primarily closes some potential security holes. This update is highly recommended.

Security Updates:

  • Closed potential cross site scripting exploit
  • Added nonces to front-side registration
  • Updated nonces in admin form submission
  • Security evaluation and updates to other areas

Feature Updates:

  • Added dropdown option for User Profile (members-area) and Register page location
  • Updated dropdown field to accommodate commas in the values (ex: 1,000)

Other Updates:

  • Updated TOS shortcode to be case-insensitive for the shortcode parameter (TOS/tos)
  • Begin deprecating members-area parameter to be replaced with user-profile
  • Separated User Profile functions from wp-members-core.php file
  • Applied post 2.8.0 patches and corrected missing files


New Feature release: 2.8.0 offers the beginning of a major rebuild of the admin panels with a few front-side features slipped in along the way.

Security Improvements:

  • Added a dummy index.php file in all plugin directories. This is a security improvement and disallows direct access to a directory (in case your server allows directory browsing).

Code Improvements:

  • Added new constants WPMEM_DIR and WPMEM_PATH. This will allow you to grab the directory of the plugin directly in action and filter functions.
  • Broke up the admin file wp-members-admin.php into multiple files based on function. These are all now moved into an /admin/ directory.
  • Added the password field to the fields array in the registration function so that this can be used in the registration hooks and filters.
  • Updated the logout process to use wp_clear_auth_cookie. The previous wp_clearcookie was deprecated and was causing header errors in some instances.
  • Improved the TOS shortcode. This should eliminate some of the parsing errors some users experienced in previous releases.

Admin Panel Updates:

  • New admin look updates the tabs to the WP format. This also was built to allow extensible tabs so you can hook in and create your own tabs and panels.
  • Add field dialog was updated and improved.
  • Added an admin process to edit existing fields.
  • Added new option in the plugin options to load one of the predefined stylesheets from a dropdown.
  • Block/Unblock post meta box added to the post/page editor – no need to use custom fields anymore (this feature actually updates the custom fields accordingly, so you can use custom fields if you want to).
  • Added dropdown selector for preloaded stylesheets - no need to enter the location of the preloaded stylesheets to use them.

New Filters:

  • wpmem_admin_tabs - allows developers to hook into the admin tabs to add additional tabs.
  • wpmem_admin_style_list - allows developers to hook into the dropdown list of stylesheets to add additional stylesheets.
  • wpmem_auto_excerpt - filters the automatically generated excerpt. Allows you to customize a 'read more' link.
  • wpmem_post_password - filters the automatically generated post password that blocks comments on blocked posts/pages.
  • wpmem_forgot_link - filters the forgot password link that shows in the login forms.
  • wpmem_reg_link - filters the register link that shows in the login forms.

Other Updates:

  • Added a new pre-loaded stylesheet for Twenty Twelve theme. New installs will default to this style. Note: with the addition of the new style selector in the admin panel, you can easily toggle between the preloaded stylesheets. You can also add your own using the new wpmem_admin_style_list filter, enter the URL location in the Custom Stylesheet field, or load one using wp_enqueue_scripts.

Requires: 3.1 or higher
Compatible up to: 4.2.2
Last Updated: 2015-5-27
Active Installs: 60,000+


4.5 out of 5 stars


5 of 60 support threads in the last two months have been resolved.

Got something to say? Need help?


Not enough data

1 person says it works.
1 person says it's broken.

100,1,1 0,1,0
25,4,1 50,2,1
100,2,2 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,4,4 67,3,2 100,4,4
50,2,1 0,1,0
67,9,6 100,1,1
100,4,4 100,1,1 100,1,1
100,1,1 100,1,1
62,13,8 75,4,3 33,3,1 100,7,7 75,4,3 83,6,5 100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 100,1,1
100,2,2 83,6,5 33,3,1 100,8,8 92,12,11 100,1,1
100,2,2 90,10,9 100,2,2
100,7,7 100,2,2 100,1,1
100,1,1 83,6,5 100,3,3 100,1,1
100,1,1 100,3,3 100,4,4 100,2,2 100,1,1 50,2,1
100,1,1 62,13,8 100,4,4 100,1,1 100,2,2
100,2,2 100,2,2 100,2,2 100,1,1
100,2,2 100,2,2
100,2,2 100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 100,2,2 100,1,1
67,3,2 75,4,3 100,1,1
50,2,1 67,3,2 100,4,4
100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 67,3,2 50,2,1 100,1,1
100,2,2 100,1,1 100,2,2 50,2,1 100,1,1
60,5,3 100,1,1
67,3,2 100,1,1
100,2,2 67,3,2
100,3,3 100,3,3 100,1,1