WP-Members Membership Plugin
WP-Members Membership Plugin

WP-Members Membership Plugin

Chad Butler

The original membership plugin with content restriction, custom registration, and more.

Membership Sites. Simplified.

You need a membership site, but you want to focus on your business, not mastering a plugin. WP-Members is simple to use, easy to set up, yet flexible in every way imaginable.

Simple to install and configure – yet customizable and scalable!

Features:

WP-Members allows you to restrict content as restricted or hidden, limiting access to registered users.

A full Users Guide is available here. The guide outlines the installation process, and also documents how to use all of the settings.

Support

There is freely available documentation on the plugin’s support site. Your question may be answered there. If you need assistance configuring the plugin or have questions on how to implement or customize features, premium support is available.

You can get priority support along with all of the plugin’s premium extensions in one cost saving Pro Bundle!

Premium Support

Premium support subscribers have access to priority email support, examples, tutorials, and code snippets that will help you extend and customize the base plugin using the plugin’s framework. Visit the site for more info.

Free Extensions

Premium Extensions

The plugin has several premium extensions for additional functionality. You can purchase any of them individually, or get them all for a significant discount in the Pro Bundle.

  • Advanced Options – adds additional settings to WP-Members for redirecting core WP created URLs, redirecting restricted content, hiding the WP toolbar, and more! Also includes integrations with popular plugins like WooCommerce, BuddyPress, bbPress, ADF, Easy Digital Downloads, and The Events Calendar.
  • Download Protect – Allows you to restrict access to specific files, requiring the user to be logged in to access.
  • Invite Codes – set up invitation codes to restrict registration to only those with a valide invite code.
  • MailChimp Integration – add MailChimp list subscription to your registation form.
  • Memberships for WooCommerce – Sell memberships through WooCommerce.
  • PayPal Subscriptions – Sell restricted content access through PayPal.
  • Security – adds a number of security features to the plugin such as preventing concurrent logins, registration form honey pot (spam blocker), require passwords be changed on first use, require passwords to be changed after defined period of time, require strong passwords, block registration by IP and email, restrict specified usernames from being registered.
  • Text Editor – Adds an editor to the WP-Members admin panel to easily customize all user facing strings in the plugin.
  • User List – Display lists of users on your site. Great for creating user directories with detailed and customizable profiles.
  • User Tracking – Track what pages logged in users are visting and when.
  • WordPass Pro – Change your random password generator from gibberish to word-based passwords (can be used with or without WP-Members).

Get support along with all of the plugin’s premium extensions in one cost saving Pro Bundle!

The FAQs are maintained at https://rocketgeek.com/plugins/wp-members/docs/faqs/

Excellent plugin and support

By LS (lsterling03) on August 26, 2024

I've used WP-Members many times. Highly recommend. It does a lot for a free plugin, especially if you know what you're doing with the action and filter hooks. The pro-support plan is highly recommended if you will be making more extensive customizations. Access to the code snippet library really speeds up development. And when I've needed more assistance, the support I have received has truly been top-notch and sets WP-Members apart from other plugins. I like that it's not bloated with things I don't need, but has the ability to be expanded.

Works great so far.

By michaeljgibson on June 19, 2024

WP-Members seems to work great so far. I have only tested it with a local build on a demo web application, and it took me a bit of poking around to figure out all the options, but, at this point, I am pleased with how it works

Highly Recommended - Great Plugin Suite, Best Support

By edtorrey on June 9, 2024

2024-06-09: Rocketgeek continues to impress as a quality plugin accompanied by excellent support. I use many of the available extensions to enhance to functionality on my several public facing commercial websites. One of the most powerful is the front-end content access control afforded by the Membership feature; formerly called Product. Highly recommended.

12 Jan 2016: I replaced my earlier rating. If you are looking for a membership with rich access control management for WordPress, You have to give WP_Members a close look. The quality of the build, rich feature inventory, and highest level support make this choice Top Shelf. Paid Support is very low cost and gives access to additional resources that speak volumes for Chad Butler, Plug-in Author. Great Product. Great Value. You'll wonder how you lived without it. (I was not compensated in any way for this rating. Just very happy with the product.)

Great Membership Plugin

By ibc3 on May 21, 2024

I have been using WP-Members for years on several client websites. It is flexible and provides many features. Highly recommend. Great support, too!

Works Great!!!

By bigwavemaui on March 15, 2024

Thanks for the great plugin!!! Used it for years!!!

It is a complete plugin that can perform many functions.

By m0507 on December 20, 2023

I started using this plugin a few days ago.
I think it is a very good plugin with many features implemented.
I'm not familiar with how to use it yet, but…

Absolutely great functionality and support

By starapple on December 13, 2023

I bought the WooPayments add-on to extend my usage of WP-Members on the strength of two things: (1) As I set up a revamped site and prepared it for subscriptions, I set up WooCommerce and WooPayments because it all seemed professional and efficient; (2) I decided on WP-Members based on Chad Butler's name recognition that I associate with many years of WordPress professionalism.

I have not been disappointed even though at one stage I wondered whether I should have gone for one of the bloated plugins that brag of multiple drag-and-drop form building and features that I did not see mentioned upfront in the WP-Members documentation. It seemed to me that everything I needed to implement would depend on "support".

Yes, you have to cut and past a lot of code snippets to perfect your implementation but the real problem in my view is the way the user manual is presented in pieces and not the basic possible functions of WP-Members. All the features in the heralded plugins are available, yet here seems to be a need for a good old time procedural manual in the style perfected by Microsoft: 

"This is the most popular or likely use case. To do so-and-so do:

  1. X
  2. Y
  3. Z"

The plugin author knows his stuff, is patient with customers and lavish with his support.

Best membership plugin and top tier support!

By billybrad on November 28, 2023

This is the absolute best wordpress membership plugin but beyond that simple fact is that the support provided by the developer is awesome. I can't recommend it enough!

The best free member plugin

By Tegomass on November 27, 2023

tested multiple members plugin. This one is really great for those who knows a little bit WordPress.

It's simple to use and the documentation is really complete.

Perfect replacement for wp named users

By lecyril on November 14, 2023

As stated in the title, I was using another plugin that had not been updated for several years. Bad idea. The last wordpress update completely broke my website, and I moved everything to WP-Members Membership Plugin. While there is a bit of a learning curve and I am glad I tested everything locally, I was able to significantly simplify the administration of our memberships, both for me as an admin and for our members. The documentation is outstanding, thanks a lot!

3.5.0

  • WP-Members pluggable deprecated for use in theme functions.php (wpmem will be initialized when plugins are loaded). If you have any WP-Members pluggable functions that load in the theme functions.php, you’ll need to move these to another location, such as a custom plugin file. Keep in mind, pluggable functions are no longer the preferred way of customizing (and have not been for many years) as most customizations, if not all, can be handled by using the plugin’s filter and action hooks.

3.4.9.5

  • Fixes a bug in the 3.4.9.4 release in an unannounced filter hook (that will be part of 3.5.0)

3.4.9.4

  • Adds index.php to user upload directories to prevent directory browsing if not specifically disabled elsewhere.
  • Define $woo_connector object variable for PHP 8.2+ with the premium WooCommerce integration extension.

3.4.9.3

  • Additional output escaping for user profile class.

3.4.9.2

  • Early patch fix for export if memberships are enabled but there are no memberships defined (from 3.5.0 included fixes).
  • Early patch fix for fields data list in admin notification email if HTML formatted email is enabled (from 3.5.0 included fixes).
  • Security review and patches: Review shortcode object class for sanitizing all shortcode attributes and escaping all output.
  • Security review and patches: Review admin user profile class for sanitizing all input and escaping all output.

3.4.9.1

  • Update the allowed fields in the [wpmem_fields] shortcode when enabled.
  • Update WP version compatibility.

3.4.9

  • Security update for the [wpmem_fields] shortcode. See the release notes on the support site for more detail.
  • Adds wpmem_field_sc_meta_keys filter hook to filter meta keys allowed by the [wpmem_fields] shortcode (default: fields that are in the WP-Members Fields array).
  • Adds wpmem_is_login(), wpmem_is_register(), and wpmem_is_profile() conditional functions.

3.4.8

  • Fixes a 3.4.7 bug that causes “extra” user fields to not save option to add to user screen (users > all users).
  • Fixes a 3.4.7 bug that throws a php error when saving settings in the main options tab.
  • Fixes bug in 3.4.7 that causes custom fields array to be overwritten as empty when updating fields in the plugin’s Fields tab.
  • Fixes issues with updating WP-Members WooCommerce integration settings in the main WP-Members options tab.
  • Security update in Fields tab reorder processing.
  • Code improvement udpates to RS Captcha validation processing.
  • Adds wpmem_get_form_state() API function (replaces checking $wpmem->regchk directly).

3.4.7

  • Code improvement and database upgrade for admin user search functions; removes the wp_wpmembers_user_search_keys table and replaces it with wp_wpmembers_user_search_crud.
  • Code improvement in the password reset function for situations where an error may result in an empty user object.
  • Code improvement in REST API filtering of blocked content for situations where there may be additional (i.e. custom) values (such as those created by page builders).
  • Code improvement in hidden posts checking in case the “post__not_in” query_var is not set.
  • Code improvement to make sure required fields are required for the wp user profile, but allowable to be skipped by an admin.
  • Code improvement to make sure all object variables are declared for php 8.2.
  • Added timestamp field type.
  • Added wpmem_get_membership_id() API function.
  • Added wpmem_get_membership_slug() API function.
  • Added wpmem_is_enabled() API function for checking if specific settings are enabled.
  • Added “select all” option to several fields columns in the Fields tab.
  • Added previous data array when updating user fields, can be used in filters to check for changes.
  • Added ability to make WooCommerce products not purchaseable.
  • Added wpmem_user_memberships shortcode to display a user’s memberships.
  • Added wpmem_user_membership_posts shortcode to display a list of membership restricted posts available to a user.
  • Moved WooCommerce options out of “new feature” settings and expanded options.
  • Added option to add WP-Members fields to the WooCommerce My Account user profile update.
  • Added option to restrict WooCommerce product purchase if the product is set as restricted (requires that WC “product” custom post type be enabled for WP-Members).
  • Added wpmem_remove_membership_from_post() to the API.
  • Fix bug in wpmem_add_membership_to_post().

3.4.6

  • Fixes a bug in the user profile update object class that prevented non-admin users from updating WP-Members custom fields in the dashboard profile view.
  • Fixes some logic in the registration/profile update to check for a valid $user object (if it’s a profile). It is rare that it wouldn’t be, but this is a “just in case” to avoid unnecessary php notice errors.
  • Adds wpmem_get_user_by_meta() API function to retrieve a $user object by user meta (WP’s get_user_by() only does username, email, and ID).
  • Adds wpmem_add_membership_to_post() API function to programmatically add a membership to a post. Can be used for bulk and on-the-fly post restriction.
  • Adds wpmem_add_membership_to_posts() API functions to programmatically add a membership to a group of posts (an array of IDs or comma separated IDs). Can be used for bulk and on-the-fly post restriction.
  • Adds wpmem_create_membership() API function to programmatically create a membership. Can be used to create new memberships when hooked to other actions.
  • Adds wpmem_create_username_from_email() API function. If WooCommerce is installed, it will use the WC process, otherwise it uses a email user + number process until it finds a unique value.
  • Adds wpmem_login_link(), wpmem_get_login_link(), wpmem_reg_link(), and wpmem_get_reg_link() for getting and displaying links to these identified pages (based on plugin’s settings).
  • Adds rktgk_wp_parse_args() to general plugin API. This is a utility function that functions like WP’s wp_parse_args(), but is fully recursive (which wp_parse_args() is not).
  • Adds rktgk_get_row() to the general plugin API. This is a utility that functions like WP’s wpdb::get_row(), but incrporates wpdb::prepare() by default (saving a necessary step).
  • Updates rktgk_build_html_tag() in the general plugin API to include an “echo” parameter to automatically print result to screen (false by default).
  • Adds two new dialog message strings for acct_not_approved & acct_not_validated.
  • Adds $tag for the form being generated in the wpmem_{$form}_defaults set of filters (login|changepassword|resetpassword|forgotusername).
  • Adds author ID support for [wpmem_field] shortcode to display user meta data based on the post/page author ID (rather than the current user or querystring user).
  • Adds filter support for “shortcode_atts_wpmem_profile”
  • Improve message handling for password reset when moderated registration and confirmation link settings are enabled (and the user is not activated or confirmed).

3.4.5

  • 3.4.4 is not compatible with WP-Members Advanced Options when redirect to login is used. This version corrects that issue by rolling back the change to only load membership restriction functions when the membership products setting is enabled.
  • Adds wpmem_login_form_button_rows filter hook.
  • Adds wpmem_pwd_reset_email_link filter hook
  • Adds API functions wpmem_profile_url(), wpmem_pwd_reset_url(), wpmem_register_url(), wpmem_forgot_username_url().
  • Adds API functions wpmem_get_membership_name(), wpmem_get_membership_meta(), wpmem_get_membership_post_list(), wpmem_get_post_memberships(), wpmem_get_memberships().
  • Adds API functions wpmem_add_query_where(), wpmem_get_query_where(), wpmem_add_user_view_link(), wpmem_get_user_view_link(), wpmem_get_user_view_count().
  • Updates user views to use new API functions and adds capability to more easily customize user views.
  • Code improvement: update instances of deprecated function wpmem_gettext() to use wpmem_get_text().
  • Code improvement: update wpmem_user_has_role(), $current_user global no longer necessary.
  • Code improvement: update select2 library to version 4.1.0.
  • CSS update: defines columns widths for Settings > WP-Members > Fields table.

3.4.4

  • Adds excerpt to membership restricted content when excerpts are used and the user is logged in (should work the same as blocked content for a non-logged in user).
  • Adds excerpt to wpmem_product_restricted_args arguments to be edited or removed using the filter.
  • Adds [memberships] shortcode for admin notification email; this will include a list of memberships for the user in admin notification.
  • Fixes potential issue with [wpmem_field] shortcode if field does not have a defined type.
  • Updates to [wpmem_profile] and [wpmem_form password] for improved password reset.
  • Moves password reset link actions to template_redirect action. This should resolve issues that occur when multiple instances of the_content are run (i.e. the appearance of an invalid key message upon completing the password reset).
  • Moves export class to main user object (previously loaded from admin files). @todo Export class file also remains in admin for backward compatibility if file is called directly.
  • Moves admin object load (back) to “init” action (from “admin_init”) as later load can cause problems with extensions loading on the “wpmem_after_admin_init” action.
  • Load dependencies after settings are loaded (allows for conditional loading of certain dependencies).
  • Load membership/product restriction only if membership products setting is active.

3.4.3

  • Simplified check_validated() and check_activated() functions, included check for null $user.
  • Added wpmem_check_validated and wpmem_check_activated filter hooks.
  • Added display=”url” attribute to the [wpmem_field] shortcode for file and image field types.
  • Fix undefined variable in password reset.
  • Improve onboarding process for both new installs and updates.

3.4.2

  • Applies checkbox CSS in add new user form.
  • Code consolidation in admin options tab file (remove final use of wpmem_use_ssl()).
  • Add wpmem_recaptcha_url filter to allow for changing the URL of the recaptcha script.
  • Only apply pwd reset override on frontend (for login error).
  • Fixes undefined $wpmem->reg_form_showing.
  • Fixes a bug in the password change shortcode that causes a “too few arguments” error.
  • Changes wpmem_is_user_current() to wpmem_user_is_current() for backwards compatibility with the plugin’s premium PayPal extension.
  • Added the action being done as a parameter passed to the wpmem_get_action action hook.
  • Added support for arrays, urls, and classes to wpmem_sanitize_field() (alias of rktgk_sanitize_field()). This is in addition to the sanitization already supported.
  • apply_custom_product_message() now runs do_shortcode() to natively support shortcodes in custom membership product messages.
  • Fixed an issue that did not display the custom product message if the user was not logged in.
  • Improved custom product message for non-logged in state (same function is used by both logged in and logged out processes, so cleaned up to handle both states the same).
  • Bug fix in password reset that potentially truncates the reset link.
  • Bug fix in admin notification email for HTML formatted email (wpautop() was not being applied to email content).
  • Bug fix in wpmem_is_reg_type() that returned invalid object var.
  • Added email arg for default linebreak.
  • Added user ID to email filters.
  • Added id, class, and wrapper attributes to [wpmem_logged_in] shortcode (wrapper defaults to “div” but can be changed to “span” or “p” or something else).
  • Added user confirmed field to default export fields (if confirmation link setting is enabled).
  • Added wpmem_set_user_membership(), wpmem_remove_user_membership(), and wpmem_get_user_memberships() API functions.
  • Introduces new installer/onboarding for both new installs and upgrades.

3.4.1

  • Revise the membership hierarchy logic (see release announcement for details).
  • Changing “Product” text to “Membership” for clarity (was planned for 3.4.0).
  • Changing “Block” text to “Restricted” for clarity (was planned for 3.4.0).
  • Added wpmem_is_user_current() api function.
  • Added attachements to email function.
  • Added wpmem_email_attachments filter.
  • Moves external libraries to “vendor” directory.
  • Removes a overlooked use of wpmem_page_pwd_reset() which was deprecated as of 3.4.0.
  • Sanitize email as email, not text.
  • Fixes a bug in the user api for undefined variable when checking the user ip.
  • Fixes a bug in 3.4.0 that causes an error in user export.
  • Fixes a bug in 3.4.0 that causes the captcha validation to be run twice, resulting in failed captcha during registration.
  • Fixes css issue that caused cursor change on all list table screens for drag-and-drop; should only show on Fields tab.

3.4.0

Here is a list of changes in 3.4.0, but for a more detailed look at the impact of some of these items, be sure to review https://rocketgeek.com/release-announcements/wp-members-3-4-0-wow/

  • Rebuilds the login widget functions so there are filter hooks that more closely mimic the main body login filters. Every attempt was made to provide an HTML result that is the same as previous versions, as well as providing support for legacy dialog tags.
  • Rebuilt and revised user export functionality. Now includes an api function that can be used to customize user exports for a variety of uses.

New Feature Settings:
* The default password reset process is now the reset link. New installs will automatically have this setting. Existing installs can change to this by toggling the setting to use the legacy option in Settings > WP-Members > Options > New Features.
* The default new registration process now uses the email confirmation link. A user must confirm their email address prior to their account being able to log in. New installs will automatically have this setting, but you may opt to use the legacy option by changing the setting in Settings > WP-Members > Options > New Features.
* The default emails at install reflect the above changes. Existing installs as always will not have their email content altered by the upgrade script.

  • Post restricted message now completely separate from login form.
  • Post restricted message now has new wrapper id – #wpmem_restricted_msg

  • Improved redirect_to handling in login and register forms. Can now specify a page by slug alone in the shortcode param for portability.

  • Improved Google reCAPTCHA v3 (“invisible captcha”) to optionally display on all pages (recommended by Google to improve user “score”).
  • Improved forms display in Customizer, now can view forms on blocked content (not just shortcode pages).
  • Improved functionality of hidden posts. Now saved in WP settings (options) instead of as a transient.
  • Improved user count transient. Now expires in 5 minutes instead of 30 seconds (will result in fewer loads of the query).

  • Membership products now support hierarchy. This can be used for “levels” or for multiple expiration periods yet still only have to assign one membership to content for all child memberships.

  • HTML email for WP-Members emails can be enabled as an option in the Emails tab.

  • Login failed dialog now displays login form below the error. Removed “continue” (return) link from default message.

  • Login failed dialog (#wpmem_msg) text centered in stylesheet instead of applying in the div tag. Best way to customize is using the WP Customizer.

  • Updates to export function.

    • deprecated ‘export_fields’, use ‘fields’ instead.
  • Clone menus is deprecated. The setting remains in place for users who have it enabled. But if it is not enabled, the setting is no longer available.

  • Expands Customizer functionality so logged out forms show on blocked content (not just shortcodes).

  • Adds integration for WP’s “registration_errors” filter hook, allowing for standarized custom validation and integration with other plugins.

New API functions:
* wpmem_is_reg_form_showing()

Deprecated functions:
* wpmem_inc_loginfailed()
* wpmem_inc_regmessage()
* wpmem_inc_login()
* wpmem_page_pwd_reset()
* wpmem_page_user_edit()
* wpmem_page_forgot_username()
* wpmem_inc_memberlinks()
* wpmem_gettext() – use wpmem_get_text() instead.
* $wpmem->texturize()

Bug fixes:
* Fixes a bug in the signon process that causes the “rememberme” option to be ignored.
* Fixes a bug in wpmem_is_blocked() that returns false when checking a specific post ID.
* Fixes a bug in the autoexcerpt function that caused a double “read more” link when excerpt length was set to zero.

WP-Members is designed to run “out-of-the-box” with no modifications to your WP installation necessary. Please follow the installation instructions below. Most of the support issues that arise are a result of improper installation or simply not reading/following directions.

Basic Install:

The best way to begin is to review the Initial Setup Video. There is also a complete Users Guide available that covers all of the plugin’s features in depth.

  1. Upload the /wp-members/ directory and its contents to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress®

You are ready to begin using WP-Members. Now follow the instructions titled “Locking down your site” below.

Locking down your site:

  • To restrict posts, you will need to use the <!--more--> link in your posts. Content above to the “more” split will display on summary pages (home, archive, category) but the user will be required to login to view the entire post. You may also use the plugin’s auto excerpt setting to create post excerpts automatically. If you do not use the “more” tag or the auto excerpt setting, full post content is going to show on archive templates, unless the post is marked as hidden.
  • To begin restricting pages, change the plugin default setting for pages to be blocked. Unlike posts, the <!--more--> link is not necessary in the blocking of pages, but must be used if you have the “show excerpts” setting turned on for pages.
  • To protect comments, we recommend setting “Users must be registered and logged in to comment” under Settings > Discussion.
  • On the Settings > General page, it is recommended that you uncheck “Anyone can register”. While not required, this will prevent WP’s native registration from colliding with WP-Members, especially if you are using any of the WP-Members additional registration fields.
  • Under Settings > Reading, “For each article in a feed, show” is recommended to be set to “Summary.” WordPress installs with full feed settings by default. If you don’t change this, your feeds will show full content.

Additional Setup Information

There are also some special pages that can be created with simple shortcodes:

  • A User Profile page where registered members can edit their information and change/reset their password: [wpmem_profile]
  • A Registration page available for those that need a specific URL for registrations (such as email marketing or banner ad landing pages). Note: this is strictly optional as a registration form can also be included by default on blocked content pages: [wpmem_form register]
  • A Login page. This is also an optional page as the login form is included by default on blocked content. But if you need a specific login page, this can be created with a simple shortcode: [wpmem_form login]
  • And more shortcodes are available!

Powerful cusotmizations can be constructed with over 120 action and filter hooks, as well as user accessible functions.

Reviews

4.6 out of 5 stars

  • Version: 3.4.9.5
  • Last updated: 4 months ago
  • Active installations: 60K
  • WordPress version: 4.0
  • Tested up to: 6.5.5
  • PHP version: false