Join WPMU DEV to build a membership site with

Membership 2 Pro

Quickly turn any WordPress site into a full-power, fully-expandable membership site with both free and paid membership types.

Setup unlimited membership levels with paywalls, password protection, time-released content and trial periods.

Downloads 89,074
Ultra Compatible
Version 1.1.5

Changelog / Translations

Version 1.1.5
  • Added: Delete coupon from Stripe when deleted in plugin
  • Added: Coupon type in invoice
  • Added: New filter ms_controller_frontend_resources_load to disable membership front scripts from loading on all pages
  • Added: Bulk action on users list to resend verification email
  • Added: Privacy Policy registration checkbox confirmation
  • Added: Member GDPR tools
  • Improved: Membership front scripts load on all pages
  • Fix: Subscription Email for free membership
  • Fix: Draft invoice created on PayPal on first payments
  • Fix: After account verification, show the payment page
  • Fix: Old members show account status as active
  • Fix: Stripe coupon details on payment form
  • Fix: Email sending for free membership
Version 1.1.5
  • Added: Delete coupon from Stripe when deleted in plugin
  • Added: Coupon type in invoice
  • Added: New filter ms_controller_frontend_resources_load to disable membership front scripts from loading on all pages
  • Added: Bulk action on users list to resend verification email
  • Added: Privacy Policy registration checkbox confirmation
  • Added: Member GDPR tools
  • Improved: Membership front scripts load on all pages
  • Fix: Subscription Email for free membership
  • Fix: Draft invoice created on PayPal on first payments
  • Fix: After account verification, show the payment page
  • Fix: Old members show account status as active
  • Fix: Stripe coupon details on payment form
  • Fix: Email sending for free membership

Version 1.1.4
  • Fix: existing users should not need to verify email

Version 1.1.3
  • Added: ms_auth_ajax_login_can_login filter to select usernames allowed to login
  • Added: When normal user is made to admin user , subscriptions are removed
  • Added: Account approval setting and email template
  • Added: Account approval user management
  • Improved: Check if membership is free on trial periods
  • Improved: Unique nonce field names for login and registration forms
  • Improved: Cache enabled by default on media protection
  • Improved: More filters
  • Fixed: Update issues between pro and free
  • Fixed: Login page script loading
  • Fixed: Login page login_footer action to load in wp_footer
  • Fixed: Protection rule for All BuddyPress Pages is not protecting pages like activity, groups, members.
  • Fixed: Duplicate memberships when subscribed to a previous membership
  • Fixed: Category protection should not check for pages
  • Fixed: Category protection of post when individual post protection addon is enabled
  • Fixed: More tag protection when multi-membership add-on is active
  • Fixed: Bulk user import first and last name
  • Fixed: Minor UI fixes

Version 1.1.2
  • Added: Members List Export to CSV
  • Added: Membership and Member XML import and export format
  • Added: Rest API Help docs
  • Added: Duration for coupons - coupon can be applied onetime or recurring
  • Added: Bulk import of users in CSV as members to a membership
  • Added: Cache membership setting to allow 12 hour cache of data. This speeds up loading of pages
  • Added: constant MS_QUERY_CACHE_DURATION to define custom cache duration
  • Added: Exclude system pages from Search addon
  • Added: Menu protection for parent menu items now extends to submenu items
  • Added: Advanced media protection support for more server types
  • Added: Force Default Gateway Setting to set the default active gateway for manually added users
  • Added: Additional Invoice Setting add-on. Allows setting custom invoice id rendering but keeps the default invoice id in the gateway
  • Fixed: MailChimp Addon list function
  • Fixed: Styling for Membership Attributes PopUp
  • Fixed: Dripped Membership Url protection and menu protection
  • Fixed: Buddypress media protection conflict
  • Fixed: Update Member status for manually created members
  • Fixed: Mail sending cron fix
  • Fixed: Posts displaying when protected in category protection
  • Fixed: Rest API addon
  • Fixed: Rest API input integer validation ( and change param of /member status to member_status
  • Fixed: Auth Net Payment Gateway (Fix the 'Extra Options is invalid.' authorize error)
  • Fixed: Profile Fields add-on readonly option was not working
  • Fixed: Custom Post type protection rule to exclude private post types
  • Fixed: Conflict with Yoast WordPress SEO when registering for a membership
  • Fixed: Email notification for paid manual payment gateway
  • Fixed: Creating a new membership setting the visibility to private will hide the membership from the list
  • Fixed: Manual Gatewey not setting the gateway name in the invoice
  • Fixed: Invitation Addon errors
  • Fixed: User with admin roles cannot be assigned for a membership from backend (admin and editors)
  • Fixed: Dripped content membership details page showing error.
  • Fixed: Stripe subscription duplicate invoices generated
  • Fixed: End date on expired membership mail
  • Fixed: Wording in help page activity section

Version 1.1.1
  • Fixed: Menu Protection items not showing to all users except admin

Version 1.1
  • Added: Premium WP Rest Addon
  • Added: Advanced media protection settings
  • Added: New filter ms_frontend_controller_change_signup_url to allow disabling Membership login
  • Added: Column on admin user list with Membership name
  • Added: Added setting to enable or disable cron usage for email sending
  • Added: Emails can now be sent directly or using the WordPress cron
  • Added: Integration with new reCaptcha plugin to the reCaptcha Addon
  • Added: Option for Admin created members to generate an invoice to the membership
  • Added: Option for manual invoice created to keep the expire date of the membership the same
  • Added: Addon to hide protected pages from visitor search
  • Added: Plugin deactivation hook to clear Membership Crons
  • Added: Stripe Plan webhooks
  • Added: Some code refactoring for premium classes

  • Added: Added a filter "ms_rule_url_model_exception_rule" to set exception for URL restriction addon
  • Improved: Remove Paypal "Ship to my billing address" option from express gateway as this is digital product
  • Improved: wp_get_sites() deprecated function is replaced with get_sites()
  • Fixed: Protection rule could not be access from subsites when network protection was enabled
  • Fixed: Fatal error - Uncaught Error: [] operator not supported for strings
  • Fixed: Post protection option could not be changed from post edit screen
  • Fixed: Issue with MS_PAYPAL_TRIAL_SUBSCRIPTION when trial is enabled, members account was not activated
  • Fixed: Selection sliders were not working in some cases
  • Fixed: Second attribute could not be created
  • Fixed: New members not being added by M2 2Checkout Gateway
  • Fixed: Duplicate Content Protection Message when custom message is enabled
  • Fixed: Images are not getting load if media protection is enabled
  • Fixed: Applying Membership 2 Coupon is giving fatal error in PHP 7.1.3
  • Fixed: Membership was not showing in account page
  • Fixed: Resolved some notices

  • Added: WP reCaptcha notices
  • Added: Adding default column in Member table
  • Added: Adding default column in Billing table
  • Added: Hierarchical category in protection rule - category protection addon
  • Added: New Custom Logo in stripe checkout
  • Fixed: MS_PROTECT_NETWORK still adding membership menu in subsite.
  • Fixed: BuddyPress protection rule for "All BP pages" is now working.
  • Fixed: Fatal error: Undefined function is_multisie()
  • Fixed: Remove/hide option in the login link in shortcode
  • Fixed: show_membership attribute fixed in account shortcode
  • Fixed: Display name was not saving in membership form
  • Fixed: Some post content get protected when category protection is enabled
  • Fixed: Show table view even if there is no data in the table
  • Fixed: Fix automated email responses not sent after payment
  • Fixed: Unable to edit or create membership attributes
  • Fixed: Membership name was appearing in wordpress search result
  • Fixed: Meta box was appearing for non-admin users
  • Fixed: ms-membership-buy shortcode was allowing registration
  • Fixed: "Subscription - Before expires" email sent multiple times
  • Fixed: Pending membership switch to Active automatically
  • Fixed: Category protection addon is not working in some sites
  • Fixed: Conflict with BuddyPress - Current User notice
  • Fixed: Enabling Category protection addon doesnt show categories in widget
  • Fixed: Capability lost in Member capabilities addon
  • Fixed: Membership 2 Pro Automated Email No Password Variable

  • Same as - but all functions are working!
  • (somehow some javascript files went missing in last release, sorry for that)

  • Small Bugfixes

  • Unlock some Add-ons again, that were accidentally displayed as "Pro Only"!

Version 1.0.3
  • Brand new Template system for M2 pages: Layout can be overwritten from theme!!
  • Improvement of the Mailchimp Add-on: Membership specific lists (pick a list in the Edit-Membership page)!
  • Plus a lot more bug fixes and improvements.

  • Fixed: Version issue

  • Added: New import option to import each membership on its own, to prevent memory- or similar overflow issues.
  • Added: Settings for PayPal gateways now also list the country "Croatia".
  • Added: Filters 'ms_helper_color_index' and 'ms_model_membership_get_color'
  • Improved: Memberships can't be assigned to admin users any longer
  • Fixed: IE and Edge users can now log in from front end again
  • Fixed: Import of M1 data now correctly creates recurring memberships.
  • Fixed: For people who saw a PHP notice "WDEV_DEBUG is undefined": It's gone!
  • Fixed: Missing translation string added.
  • Fixed: Redirect add on works properly again
  • Fixed: Nickname now saves when BuddyPress profile fields add on is activated
  • Fixed: Missing string in default lost password default email no longer missing
  • Fixed: Media protection no longer breaks images in customizer

  • Added: Constant 'MS_LOG_EMAILS' to enable log and display email logs
  • Added: Constant 'MS_PROTECTED_MESSAGE_REVERSE_RULE' to implement reverse logic on membership based protection message
  • Added: Bulk Delete Membership feature
  • Fixed: BuddyPress Integration addon: "All BuddyPress Pages" rule being overwritten by rule set in Pages
  • Fixed: Warning when the database table prefix is not the default "wp_"
  • Fixed: Login on non-SSL page is broken when SSL forced for wp-admin
  • Fixed: "Already have an account" link not sending user to login form after failed register attempt
  • Fixed: "Already have a user account" doesn't redirect to purchase subscription after login
  • Fixed: HTTPS not being forced when Stripe gateway is set to Live mode
  • Fixed: Expired email sent even the user is not really expired
  • Fixed: Invitation code addon: conflict with Yoast SEO plugin
  • Fixed: Invitation code addon: usage count wasn't decreased when user removed it when signing up
  • Fixed: Multiple Membership addon: Membership was not removed when set as cancel in upgrade path and pay later
  • Fixed: Expired trial is not going to payment gateway when clicking "sign up" in invoice.
  • Fixed: Taxamo addon: tax was not added as tax in PayPal and 2Checkout gateways
  • Fixed: User can't register in Opera Mini browser
  • Fixed: Membership based protection message
  • Fixed: Advanced Menu Protection Replace Menu not working
  • Fixed: Simulation Box on frontend overlaps with navigation
  • Fixed: Content Protection Message based on membership protection
  • Fixed: Gateway mode changed from Sandbox to Live on plugin update
  • Fixed: Expired date mismatch with the original expired date in PayPal
  • Fixed: Expiry date not set while importing data in Finite membership
  • Fixed: Finite paid membership turned into free membership while importing data
  • Fixed: Finite paid membership subscription period gets doubled for a member while importing data
  • Fixed: Gateway mode changed into Live mode when something is changed in settings

  • Added: Constant 'MS_DISABLE_WP_NEW_USER_NOTIFICATION' to disable WP default welcome on registration
  • Added: Constant 'MS_PAYPAL_TRIAL_SUBSCRIPTION' to enable subscription for Paypal when trial mode is enabled (works only at Paypal)
  • Added: Constant 'MS_PROCESS_PER_BATCH' to set number of members for processing per batch
  • Added: Addon - WP reCaptcha integration
  • Added: Batch Process - Membership Status check, helpful when you have lots of members
  • Enhancement: Display warning in HELP page if cron jobs are disabled
  • Fixed: User could not use same invitation code for different memberships
  • Fixed: Confirmation emails not sent when registering new user from admin end
  • Fixed: Category protected posts was being appeared in home and search result page
  • Fixed: Warning on edit membership screen when % sign is in the membership name
  • Fixed: Subsite users subscription details can't be edited
  • Fixed: Visitors coming from search engines links get blank page, Error 500
  • Fixed: Upgrade path is ignored when a member is logged in but has no subscription
  • Fixed: Media Protection - Individual Media files protection doesn't work if embedded
  • Fixed: Media Protection - changes attachment URLs but does not revert when disabled
  • Fixed: Media Protection - changing URL of non protected media items
  • Fixed: Media Protection - Linked media URL was not masking
  • Fixed: Media Protection - Video file was not playing
  • Fixed: XProfile Date field was not being saved in registration form
  • Fixed: White screen in WP-Touch settings page
  • Fixed: BuddyPress Members directory could not be protected
  • Fixed: BuddyPress sitewide pages are not protected
  • Fixed: Welcome to BuddyPress Admin Item shows twice in Admin Side Protection Rules
  • Fixed: Typos in Automated Response Email Default Text
  • Fixed: Admin Protection - Direct link can be accessed
  • Fixed: Protected post are being appeared in feed
  • Fixed: Network Protection - Selected pages can't be viewed from network admin interface
  • Fixed: Inernal Server Error on adding a member in a multisite configuration

  • Added: Constant M2_FORCE_NO_SSL to avoid forcing SSL in Stripe Live Mode
  • Fixed: Manual Payment Gateway always in Sandbox Mode
  • Fixed: Free Payment Gateway always in Sandbox Mode
  • Fixed: Membership Payment amount could not be saved in Firefox
  • Fixed: BuddyPress Integration - No xProfile field validation
  • Fixed: BuddyPress Integration - No validation error message shown
  • Fixed: Select drop down in checkout was broken
  • Fixed: JS conflict with Visual Composer
  • Fixed: JS conflict with Be Theme
  • Fixed: JS conflict with LayerSlider
  • Fixed: Pagination was not working for Classifieds plugin
  • Fixed: Search was not working on front-end
  • Fixed: Upgrade path settings for memberships were being ignored
  • Fixed: Junk error message on Add Member page
  • Fixed: Currency was always USD in 2CO gateway
  • Fixed: Search was not working in Members Capability page
  • Fixed: Invitation Code - Max uses features were ignored
  • Fixed: Invitation Code - New code created automatically if wrong code is provided
  • Fixed: Some post types were not working for protection
  • Fixed: Recurring events are not showing in event calendar (Events+)
  • Fixed: Menu item protection was not working for Guest Membership
  • Fixed: Force SSL on Stripe checkout page in Live Mode

  • Add new option 'non-admin' to the shortcode [ms-user]
  • Improve support for protection rules on admin-side (shortcode, menu-items)
  • Improve payment-matching for imported subscriptions
  • Improve the transaction logs page and show better description for PayPal transactions
  • Improve and fix minor issues in PayPal Standard gateway, related to imported subscriptions
  • Improve the Edit-Member page to only offer valid subscription status options
  • Fix bug that caused expiration emails to be sent multiple times
  • Fix incorrectly displayed "Live Mode" flag for payment gateways on initial setup
  • Fix a PHP notice in the login form
  • Fix BuddyPress XProfile issue (caused by M2 loading before BP was initialized)
  • Fix issue in Account page that did not save the users email address
  • Fix error about undefined value 'user_id' when editing a user in M2
  • Fix error in Searchindex addon that (among others) caused a problem with Sitemaps
  • Fix issue in Profile-Fields Addon that would not save website/description
  • Fix small issues with formatting some time/date values
  • Fix small issue in Authorize.Net payment settings that would not save Secure Payments setting
  • Fix wrong logic that would hide the Billing menu item if all paid memberships were private
  • Fix small issue in URL-protection that ignored the last slash of the URL rule
  • Fix a issue that caused the modal background to stay open after closing popups in some cases
  • Small clean-up, add/update filters, fix typos, ...

  • Add new email template to customize the Forgot Password email
  • Add new option to Authorize.Net gateway settings: "Secure Payment" asks for CVC code on every payment
  • Improve transaction-logging for Authorize.Net payments
  • Improve UI of the Authorize.Net payment form on front end
  • Fix possible issue with Authorize.Net Gateway that might send empty form to the gateway
  • Fix PHP warnings caused by Profile Fields Add-on
  • Fix a bug in the Taxamo-Addon to include correct currency code with transactions
  • Fix display of line-breaks in membership description on front-end
  • Fix bug in invitation codes/coupons Add-on that randomly created empty codes
  • Fix invitation code Add-on so entering correct codes does not trigger an error message
  • Fix for caching issues on WP Engine
  • Fix missing error messages when registering username that is already in use
  • Fix wrong file-type displayed (always jpg) in the media protection add-on
  • Fix error during import "class MS_Gateway_Admin not found"
  • Fix incorrect message "BuddyPress uses Membership page"
  • Fix dates that displayed in GMT instead of local timezone
  • Fix bug that allowed logged-in users to register a new account

  • Improve the shortcode column in the admin membership list
  • Improve layout of [ms-note] messages on front-end and select lists in admin pages
  • Improve performance of the billings page, show additional details in edit-invoice screen
  • Fix wrong registration workflow that showed membership list instead of payment form
  • Fix the Reset Password workflow
  • Fix issue in WP 4.3 that sent password-reset emails during user registration
  • Fix incompatibility with MarketPress 3
  • Fix problem with user registration when the password fields were hidden via Profile Fields Add-on
  • Fix ms-protect-content shortcode: Resolve shortcodes in protected content also for admin users
  • Fix bug in setup-wizard that sometimes did not finish after creating the first membership
  • Fix issue where Manual Payment displayed price multiple times (e.g. when using Yoast SEO)
  • Fix an issue with Internet Explorer privacy settings that caused IE to reject M2 cookies
  • Replace text-domain constant MS_TEXT_DOMAIN with string 'membership2' to comply with WordPress standards
  • Update several background libraries (mainly select2, fontawesome, jQueryUI)

  • Fix parse error in older PHP versions (introduced in v

  • Add a new Automated Email Response: User account created (i.e. welcome email)
  • Add a warning when BuddyPress pages conflict with M2 Membership pages
  • Add a warning when M2 is installed in an deprecated directory (can cause conflicts)
  • Fix detection of valid subscriptions to fix issues with subscriptions getting expired too early
  • Fix the BuddyPress registration form/workflow
  • Fix the Profile Fields Add-on, now settings are actually saved
  • Fix Invitation Code Add-on to not automatically change existing codes upon saving
  • Fix bug that prevented deleting invoices
  • Fix a bug that would temporarily grant access to a membership when user cancels payment
  • Fix a bug that created duplicate email templates every time an email was sent
  • Fix a bug in the reset-script that would delete too much data in multisite installs (see Help > Advanced Settings)
  • Fix a wrong action hook used in registration form that would display wrong fields when certain plugins are activated
  • Fix a PHP warning on Membership 2 pages about "invalid argument in foreach"

Version 1.0.1
  • Add gateway: 2Checkout
  • Add new Add-on for WPML integration
  • Add new Add-on to enable Pro-Rating when switching memberships
  • Add new Add-on to allow Search Engines to index protected content
  • Add new Add-on to customize the Registration Form and User Profile Fields
  • Add new Add-on that allows creation of custom Membership Attributes
  • Add a new Add/Edit Member page where subscription details can be modified
  • Add an admin notice when no payment gateway is active but paid memberships exist
  • Add bulk actions to the Members admin page
  • Add a dedicated Edit Membership page with improved layout
  • Add an edit page to change the Membership Type at any time
  • Add an edit page to override Automated Email Responses for each Membership
  • Add an edit page to override Protection Messages for each Membership
  • Add a new settings page to define Upgrade Paths to each Membership
  • Add a warning when using a wrong value in the PayPal Standard settings
  • Add a few new API functions (see the API Docs link in the Help page)
  • Add new functions to Payment Logs to manually handle invalid payments
  • Add new template tag function `ms_has_membership()`
  • Add template support so themes can define custom Membership pages (m2-account.php, m2-memberships.php, m2-protected-content.php, m2-register.php, m2-registration-complete.php, m2-invoice.php)
  • Improve payment logs to display additional/better information for errors
  • Improve the layout of the coupon fields in the payment confirmation form
  • Improve HTML output of shortcodes to be compatible with most themes (remove line breaks inside HTML tags)
  • Improved third party library by adding a class prefix to avoid class collisions (Stripe, Mailchimp, AuthorizeNet)
  • Improve the BuddyPress Add-on to optionally use the M2 registration page
  • Improve caching and reduce SQL queries to make the plugin faster
  • Improve the Billings list (status-indicator, overdue payments, quick-pay for manual payment gateway)
  • Remove condition that auto-injected missing M2 shortcodes on Membership pages
  • Fix wrong subscription logic that activated Subscriptions without payment in a few cases
  • Fix possible memory issue that happened when updating the plugin
  • Fix bug that did not activate Subscription when an invoice was paid via Manual Gateway
  • Fix the invitation code Add-on (integration in payment form was not working)
  • Fix a caching issue that caused problems with Subscriptions when memcache was enabled
  • Fix problem in network wide mode that would not display all Users in the Members page
  • Fix registration logic to honor domain limitation for signup email addresses
  • Fix bug that would not give access to protected content while user is in trial period
  • Fix bug that set the wrong expire date for "Finite Access" subscriptions
  • Fix wrong rounding-logic in Stripe gateway
  • Fix bug that prevented admin to change the recurring payment frequency to anything else than 'Days' in few cases
  • Fix a bug in Automated Email Response Settings that did always enable the email when saving changes
  • Fix bug that would send some emails even when the 'MS_STOP_EMAILS' flag was active
  • Fix bug that would always add M2 menu items when a new membership is created
  • Fix plugin logic to allow changing Protection Rules even when Content Protection is disabled
  • Fix plugin translation using .mo files, added a readme file with instructions to /languages dir
  • Fix compatibility issue with WP Recaptcha during user registration
  • Fix a minor security hole in the data import module
  • Fix a rare 403 error that happened when a user was accessing protected content
  • Fix a bunch of PHP notices and warnings
  • A lot of small improvements behind the scenes, cleanup and some new filters

  • Add new option to customize which users are considered Admin users (details in the Help > Advanced page)
  • Fix a typo in the PayPal Single gateway that caused M2 to ignore some payment information
  • Fix bugs that prevented removing protection from individual posts or pages
  • Fix the search function on the Members page
  • Fix two possible infinite loops that resulted in timeouts or rule values not being saved
  • Fix wrong protection logic of the Admin Side Add-on
  • Fix wrong protection logic of the Advanced Menu Add-on
  • Fix small issue that did not correctly disable the Media Add-on
  • Fix a wrong parameters that limited search results of list tables to 5 items in some cases
  • Fix the description text of the ms-protected-content shortcode for admin users
  • Fix a typo in the ms_rule_has_access filter
  • Fix a possible/rare mis-configuration that could happen on single-site installations

  • Improve Transaction logs to also log inactice or invalid gateway calls
  • Fix a critical bug that caused protection rules to be reset on plugin activation
  • Fix issue that did not display any "Page" rules in the Membership Overview screen
  • Fix the bulk actions in the Protecion Rules page
  • Fix wrong WordPress action that was called in the user-registration form
  • Fix rare error that happened when dripped content had no/invalid date settings
  • Fix Members/Billings list to keep search filter when changing the sort option
  • Fix Billings search logic to find all users that contain the search word (no exact username required anymore)
  • Fix PHP warnings caused by the Taxamo Add-on
  • Hide the Guest and Default memberships in the Members list, as they are useless there

  • Add logging for payment gateway transactions, can be viewed via "Billings > View Transaction logs"
  • Fix subscription details when changing the membership payment_type (within 6 hours after membership update)
  • Fix follow-up issue in recent Mailchimp bug fix

  • Add possibility to change payment options even when membership has active subscribers!
  • Add link to Members-List from the Membership list (click on the member-count value)
  • Hide inactive memberships in the Members and Protection Rules pages
  • Fix compatibility issue with the wp-recaptcha plugin
  • Fix several php notices and warnings ("invalid argument", "undefined index", etc.)
  • Fix protection of the Private Message feature in the BuddyPress Add-on
  • Fix Mailchimp Add-on to fetch all lists from Mailchimp, not only 25
  • Add new hook to observe status change of subscriptions: "ms_subscription_status-"

  • Fix the import tool to import data from old Membership plugin correctly (recurring payments, subscription status and end date)
  • Fix the i18n support, the plugin is translated correctly again
  • Fix error message that was displayed when dates of dripped memberships were saved

  • Add better error handling to the upgrade routine
  • Fix a major bug in the automatic import wizard that prevented the plugin from importing old Membership data
  • Fix wrong redirect during setup wizard that ended in "Not allowed to view page" errors
  • Fix some typos in admin pages
  • Fix the protection rule for "Friendship Request" in the BuddyPress Add-on
  • Fix a bug in the Coupons Add-on that discarded changes instead of saving them
  • Rename page "Protected Content" to "Protection Rules"

  • Fix compatibility issues with PHP 5.2.4 - note that you still need PHP 5.3 to use the Stripe Gateways

  • Fix some PHP notices and warnings that did happen during first setup

Version 1
  • Plugin name changed from Protected Content to Membership2
  • New network-wide protection mode added (see Membership2 > Help page)
  • New official plugin API added (see Membership2 > Help page)
  • New Payment gateway added: Stripe Subscriptions
  • New option in Membership Payment settings to disable individual payment gateways.
  • Improved payment settings page to use number-input fields instead of text-fields
  • Fix issue where Simulation (Test) mode added HTML code to all Ajax responses
  • Fix blank screen after submitting the password reset form
  • Minor improvements all over the place
The most powerful, easy-to-use and flexible membership plugin for WordPress sites available.
  • Member paywalls and dripped content
  • 7 payment options in 25 currencies
  • Invitation-only membership sites
  • Add unlimited membership levels
  • Targeted content protection
  • Trial periods and coupons

Launch a membership site with Membership 2 Pro to easily set-up any membership system you think up.

Grow a following with free protected content, build a business with paid access, or run an online magazine with dripped articles and videos.

Four Flexible Membership Types

Use the included membership types to quickly make your content available to members and hidden to logged-out users, release content in timed intervals, limit access to only a few items, or make content available to only logged-in users who have not yet joined.

Make it Members Only

Limit access to pages, posts, categories, videos, audio, images, PDFs, digital downloads, forums and even specific words and links – You control who sees what on your site.

More Options and Fewer Headaches

Use built-in add-ons to extend Membership 2 Pro as your site grows. Activate only the features you need to boost speed and save time.


Automated Messages

Extended automated email responses for events.

Admin Side Protection

Control access to items in the WordPress dashboard.

Menu Protection

Add, protect and replace menus for visitors and members.


bbPress Integration

Use Membership 2 Pro to extend bbPress features.

BuddyPress Integration

Create and exclusive social network with BuddyPress.

Category Protection

Use categories to protect a group of posts.


Membership Coupons

Create coupons and discounts to grow your business.

Post Protection

Protect both posts and custom post types.

Invitation Codes

Users need an invitation code to subscribe.


Media Protection

Protect your images and other Media Library content.

Member Capabilities

Manage user-capabilities based on membership level.

Custom Attributes

Add custom attributes you can use in shortcodes and code.


Multiple Memberships

Subscribe to more than one membership at a time.


Pro-rate payments when switching memberships.

Profile Fields

Customize fields for profile and registration form.


Protect Special Pages

Protection special pages such as search results.

Redirect Control

Define URL after logged-in or logged-out.

Search Index

Allow search engines to index protected content.



Protect content using Shortcodes.


Activate to comply with EU VAT regulations.

Trial Period

Set free trial offers for membership.


URL Protection

Protect any specific page on your site.

WPML Integration

Use WPML to translate plugin messages.

WP reCaptcha

Enable WP reCaptcha integration.


Membership 2 Pro comes packaged with everything you need to start taking payments out of the box – no expensive extensions.

Four Reliable Payment Options

Protect your content behind a membership login and offer automated processing. Choose from four payment options in 25 currencies. Get paid with PayPal, Stripe,, or good old fashioned manual payments.

Membership 2 Pro makes it easy to manage your users.

Manage More Users

Quickly find and add members from the dashboard. View their membership type, when it expires and any pending payments. Or visit the overview screen to see recent news, stats, new members sign ups, and a list of content available to logged in members.

We’ve created an experience that makes setting up a membership site simple and intuitive, so you can start protecting your content even faster.

Smart Setup Wizard

There’s no guesswork with Membership 2 Pro. Our setup wizard will guide you through configuring your membership site.

It even includes simulation mode to quickly verify everything is working before pushing your site live.

Configure Membership2 Pro across your entire network from one place.

True Multisite Protection

Membership 2 Pro includes special controls for Multisite network administrators.

Now you can configure content protection from one location – even on large networks. It’s WordPress SuperPowers for your network.

Pages labels make it easy to manage pages created automatically by Membership 2 Pro.

Automatically Create New Pages

Membership 2 Pro automatically creates the pages you need and lets you choose which pages to include.

Pages created by the plugin are marked so you can quickly spot and manage them from your page list.

Create custom paywall messages.

Protection Messages

Encourage visitors to your site to sign up for exclusive access to members-only content. Display a carefully crafted message to logged out users, along with details or how they can join your site.

Built-in admin email system.

Automated Email Messages

Email new members automatically when they sign up to your site. Thank them for taking the time to join as a free member and even offer them a coupon for discounted membership.

Toggle content protection across your site for simple powerful control.

Control Site-Wide Content Protection

Easily toggle whether you want content protection turned on or off, either from the easy-to-spot notification in the admin bar or directly in the Membership 2 Pro settings.

Pro Results – Simple Shortcode Integrations

Use shortcodes to do everything from simply displaying a membership type to protecting specific content from users on certain membership levels.

Take Advantage of Membership 2 Pro Integrations

Membership 2 Pro includes built-in advanced membership feature protection for Affiliates, Custom Sidebars Pro, Events+, PopUp Pro and Appointments+.

Plus, the Membership 2 Pro API makes it easy to integrate your favorite plugins and extend your membership site.

Welcome to M2! It’s the new, improved version of our Membership and Protected Content plugins, and it’s the best version yet.

To Install:

Installing M2 will depend on where you’re starting from, so this part of this guide is divided into three sections; Upgrading from Protected Content, Upgrading from Membership, and First-time install. Read the section that pertains to you before you jump in.

Upgrading from Protected Content

Upgrading to M2 from Protected Content is the simplest option. M2 will show in your admin as an available update for Protected Content, which means it will quietly replace Protected Content when the upgrade is complete.

Congrats! You’re done!

Upgrading from Membership

Important Note: You must upgrade from your WPMU DEV Dashboard, rather than via FTP or Plugins > Add New > Upload in order to import your Membership settings to M2.

1: Make sure the latest version of the WPMU DEV Dashboard is installed.
2: Make sure latest version of the old Membership plugin is installed (
3: You’ll see a button to unlock the update under Membership2 > Settings and/or WPMU DEV > Updates.
4: If you don’t, you can click the link in your WPMU DEV Dashboard to force it to check for updates and repeat step 3.

Once M2 is active, go to Membership2 > Settings > Import tool.

You’ll see two radio buttons, one to import via file, one to import WPMU DEV Membership settings. You’ll chose the second button, then Preview Import. Once you’re satisfied with how things will import, hit import.

M2 will import membership levels, subscription information/data, and member data from Membership.

However, M2 will not import shortcodes or content protection settings. So after upgrading, you will need to add in all your content protection settings for each membership level, and find and replace any Membership-generated shortcodes with M2 shortcodes. Tip: use a handy plugin like Better Search Replace to make that more of a cheer than a chore.

Important: In some cases, WordPress cannot replace the plugin files automatically and will display an error during update. When this happens, please deactivate and delete the old Membership plugin before installing Membership 2 Pro.

Congrats! After this, you’re done too!

First-time install

If you’ve never used Protected Content or Membership before, you’ll install the plugin just as you would any other. You can visit the Installing Plugins section in our comprehensive WordPress and WordPress Multisite Manual if you are new to WordPress.

Congrats! You’re ready to set up M2.

Creating a Membership Site with M2

If you’ve already used Membership or Protected Content, using M2 is going to be very familiar to you. M2 allows you to control, down to the tiniest detail, what content you show to which members. With free and paid membership options, you can choose to protect content behind a paywall, or just create a private space for your free members. Let’s start building your site now.

Step One: Make a Plan

Creating a content protection plan is your first step. Jot down a diagram or outline of how you want your site to work. What membership levels do you want? What content do you want users on each membership to see or not see? Do you want your content to be always protected on some memberships, yet made accessible on others over time or on specific dates? If you’ll charge for access, how much will it cost and how will you accept payments? Yep, M2 can handle all that & more!

Start with a plan for your content protection.

If you have installed M2 or upgraded to it on a multisite network, part of your plan should be to decide whether you want your content protection rules to apply site-by-site, or if you want to leverage the network-wide protection features of M2.

If content should be protected site-by-site, simply activate the plugin on the site where you want your content protected and continue with the setup as detailed in the rest of this guide.

But, if you want to create content protection rules network-wide, you’ll need to first add the following constant to your wp-config.php file:
define( 'MS_PROTECT_NETWORK', true );

You can then set up protection rules from your network admin for every site in your network. Woot!

Important note: the above constant will only work if added to wp-config.php before you start creating your memberships. Any existing memberships on any site in your network will not be recognized by the network settings. A future release of M2 will allow for pre-existing memberships to also function network-wide.

When you’ve got a rough sketch of your plan, it’s time to start building your content protection.

Step Two: Create Memberships

If you are not redirected immediately to the Setup page after installing the plugin, click the Setup menu item in the Membership2 menu.

Membership2 Setup

Memberships are the heart of M2, and you’ll use the memberships you create to complete each additional step in the set up process. To start, we give you a default “System Membership.” All current members will be in this Membership until they choose or they are moved to a different plan.

With M2, you can create four different types of Membership.

M2 Memberships Create New

1. Standard Membership: Most typical memberships will be Standard. Standard memberships can be free or paid. You can create as many standard memberships as you’d like. If you want to created a tiered system, such as Bronze, Silver, and Gold plans, you’ll create a standard membership for each tier you want to offer.

2. Guest Membership: A guest membership sets rules for non-logged in visitors to your site. If you’d like visitors to have unique access rules, you’ll need a Guest Membership. You’ll only be allowed to create one guest membership which will apply to all guests.

3. Dripped Membership: This membership is used when you have content you want to grant access to one piece/group at a time. The settings for this membership will allow you to set dates or time spans for when content is to be revealed or hidden.

4. Default Membership: This is similar to the System Membership that is added by default. It’s a membership for any registered/logged in user that is not currently the member of any other membership plan. Like the guest membership, there can only be one default membership on your site.

Creating a new membership is very simple.

1. Go to Membership2 > Memberships
2. Click “Create New Membership”
3. Choose the type of membership from the grid of four.
4. Name your membership.
5. Save.

Create each of the memberships you’ll need (you can add/edit/remove them later, as well) and we’ll move on to the next step. Don’t worry about setting up billing or payment gateways at this time, we’ll add those later on.

Step Three: M2 Pages

Next up, a quick and easy step; setting up the necessary pages M2 will need. Go to Membership2 > Settings > General

M2 Protect Content Settings
  1. Make sure you have a Memberships, Register, Account, Protected Content, and Registration Complete page set up for M2.
  2. Decide which items you want to appear in your main navigation menu.
  3. Decide whether you want the black admin bar that will usually show on the top of each page on your site (the one that says “Howdy, you”) to show for members. You’ll likely want to wait until you’ve finished getting everything set up before clicking the Content Protection toggle though.

Important notes:

  • If you’re using a plugin to create a custom registration page, like BuddyPress, Pie Register, or Gravity Forms, be sure to select THAT registration page here, rather than the default one created by the Membership2 plugin.
  • If you are using another plugin for registration, be sure to add the following code to your theme’s functions.php file so the Membership2 plugin knows about it (this is not required for BuddyPress, but it won’t interfere if you add it anyway):
    add_filter('ms_frontend_handle_registration', '__return_false');
Step Four: Content Protection

Membership 2 > Protection Rules is your home base for choosing who sees what content, all in one beautiful and easy to use page. You’ll see your content protection options in a vertical list of tabs. Clicking any of these tabs will allow you to set content protection for that particular content type.

M2 Page Protection Settings
M2 Page Protection Settings
M2 Comment & More Tag Protection
M2 Comment & More Tag Protection

With no Add-Ons active, M2 allows you to protect pages, custom post types, comments and the “more” tag (see below for more about the available Add-Ons). It also provides settings for basic menu item protection.

M2 Menu Protection
M2 Menu Protection

You’ll see the default mode is for everyone to be able to see everything. If you hover over any content item’s current access, you’ll see a “modify access link.” Click this to restrict this content item to only members of the membership(s) you assign. A colorful pop up will appear with each of your memberships listed. Click the memberships you want, and move through the content items, and tabs, one by one until you’re satisfied with your settings.

Step Five: Billing, Subscriptions, and Payment, Oh My!

M2 comes packed with several payment gateway options.

Manual payments

PayPal Single

PayPal Standard

Stripe Single

Stripe Subscriptions

M2 Payment Gateways

You can choose whichever gateway or combination of gateways meets the needs of your an your members. You can set up your supported gateways via Membership2 > Settings > Payments.

When payment gateways are set up, go back to Membership2 > Memberships, and edit each paid membership to include the gateway, the cost, and the duration of the membership.

Hover to see the Payment Options link.
Hover to see the Payment Options link.
M2 Subscription Payment Options
M2 Subscription Payment Options

If you’re planning on accepting recurring subscription payments, you’ll need to use either PayPal Standard or Stripe Subscriptions to manage the payments.

Now that your memberships, content protection, and payment information are all in place, all that’s left is adding a few more personal details and checking your levels to ensure everything is working as expected.

Step Six: Final Steps & Pulling it All Together

You’ll notice there are still a few more settings in M2 you can adjust. Let’s take a quick look.

Protected Content Messages – You can change the text (and even add images and fancy styling!) when a user is trying to view content they don’t have access to. You’ll find these messages in Membership2 > Settings > Protection Messages.

M2 also comes with a very handy “Membership Simulator” tool that allows you to view your site as if you were a member of any (or none) of your Memberships. Before you call it a day, take a few minutes and run through each of your Memberships to make sure they see what you want them to see.

To access the Simulator, click the Test Memberships button in the toolbar in your admin or on the frontend of your site. You’ll then see the Simulator window in the top-right corner on every page of your site.

M2 Membership Simulator

Reward yourself with a pat on the back, you’re getting there!

Membership2 Add-Ons

The real magic in Membership2 is in the Add Ons. All the Add-Ons are included, but only those that apply to your individual set-up can be enabled so you don’t need to deal with any items you don’t need. For example, if you do not have BuddyPress installed on your site, that Add-On will be greyed out with a message informing you that BuddyPress needs to activated before you can use it.

M2 Add Ons

The following Add-Ons are included:

Additional Automated Messages – this add on allows you create custom auto-messages for members.

M2 Additional Automated Emails
M2 Additional Automated Emails

Admin Side Protection – Want to extend your content protection to your Admin area? This add on will do just that.

M2 Admin Protection
M2 Admin Side Protection

Advanced Menu Protection – This Add-On has three options to allow the ultimate control over access to your navigation menus. Click the Details link in the Add-On to select the option you want.

  • Protect Single Menu Items (default)
  • Replace Individual Menus
  • Overwrite Contents of Menu Locations

The option you select will determine the additional settings that will become available at Membership 2 > Protection Rules so you can tweak the access rules for your menus.

M2 Advanced Menu Protection
M2 Advanced Menu Protection

bbPress Integration – If you’re a bbPress user, you can protect your bbPress forums with this add on.

M2 bbPress Protection
M2 bbPress Protection

BuddyPress integration – If your site uses BuddyPress, this add on will let you protect groups, profiles, and more.

M2 BuddyPress Protection
M2 BuddyPress Protection

Category Protection – If you’d like to protect posts by category, this add on makes it super simple.

M2 Category Protection
M2 Category Protection

Coupon – Offer coupons for memberships.

M2 Add New Coupon Settings
M2 Add New Coupon Settings

Individual Custom Posts – If you’d like to control access to custom posts on a post-by-post basis, this add on will help. When enabled, the Custom Post Types tab under Membership 2 > Protection Rules will be replaced with Custom post Type Items where you can select the specific items you want to protect for each membership.

M2 Custom Post Type Items Protection
M2 Custom Post Type Items Protection

Individual Posts – Like the add on above, but for standard WordPress blog posts. When enaled, this Add-On will add a new tab under Membership 2 > Protection Rules called Posts where you can protect individual posts.

M2 Post Protection
M2 Post Protection

Mail Chimp Integration – If you’re a MailChimp user, this add on allows you to automatically optin your users to your MailChimp lists. There are 3 options available under the MailChimp tab in Membership2 > Settings where you can select which lists to use for Registered Users with no membership, Members and Deactivated Members.

M2 MailChimp Integration
M2 MailChimp Integration

Media Protection – Like Advanced Menu Protection, this add on has three options to customize how your media is protected.

M2 Media Protection Options
M2 Media Protection Options

Member Capabilities – This add on will allow you to grant permissions/access for individual members, outside of their membership level.

M2 Advanced Capabilities
M2 Advanced Capabilities

Multiple Memberships – If you need users to have more than one simultaneous membership on your site, this add on will allow that functionality. This Add-On doesn’t create any new settings for you to worry about though.

Important note: Members who are in multiple membership levels will default to the permissions of the most permissive level they belong to, if there’s a conflict. For example, let’s say you have a craft-based site where members can join any memberships they want, and each membership is based on a craft. If the Knitters have access to all custom post types, but Stitchers do not, and Bev is a member of both Knitters and Stitchers, Bev will have access to all custom post types.

Protect Special Pages – Special page protection covers archives, 404 Pages, and search result pages, to provide truly wall-to-wall protection for your site.

M2 Special Pages Protection
M2 Special Pages Protection

Redirect Control – If you want to control where users are redirected after logging in or logging out, this add on will be a big help. A future update will include the ability to set custom redirects based on memberships.

M2 Redirect Settings
M2 Redirect Settings

Shortcode Protection – This Add-On will enable you to protect the content that is output by shortcodes from WordPress, or even other plugins. Booya!

M2 Shortcode Protection
M2 Shortcode Protection

Taxamo – EU VAT regulations apply to you? We’ve got your back. This Add-On will add a new tab to Membership2 > Settings where you can set up your Taxamo stuff.

M2 Taxamo Settings
M2 Taxamo Settings

Trial Period – If you’d like to give potential paying members a free taste of how great a membership on your site can be, activate the Trial Period add on. A new option will become available in the Payment settings for each paid membership you have.

M2 Trial Period
M2 Trial Period

URL Protection – When none of the other add ons will do, URL protection will allow you to protect content by the page URL. URL protection includes regular expression support, so you can drill down into specific content as much as you need. Be careful with this one though; any rules you add here will override all other rules.

M2 URL Restrictions
M2 URL Restrictions

M2 includes all the add ons we included in Protected Content to make custom content protection as comprehensive as you need it to be. Now that you know what you can protect, it’s time to choose the add ons you need (if any), and start applying content protection rules for these as well as the default settings which were added above.

That’s it! You’re done!

As always, if you get stuck, or you’d like to try something not explained in the Usage guide, come visit us on the forums, we’re more than happy to help get your M2 site up and running.

Known Issues

Cache plugins can often interfere with plugin functionality. If your users are not being assigned memberships after successfully paying and logging into your site, check if you have object cache enabled in your cache plugin. If so, add the following to the non-persistent fields/groups

Membership 2 Pro is covered by the WPMU DEV Guarantee

WPMU DEV Guarantee

We guarantee that...

  • Membership 2 Pro will work as advertised
  • You will receive 24/7 365 expert support for any problem
  • If you cancel your FREE trial, you can keep Membership 2 Pro
  • Membership 2 Pro is secure, always updated and well coded

Money back guarantee!

While you have 30 days, no obligations risk-free trial of WPMU DEV if you become a paid member and are dissatisfied with any of the above we'll refund you, no questions asked.

Membership 2 Features

Structure the perfect membership system.

  • Standard Membership
  • Dripped Content
  • Guest Membership
  • Default Membership
  • Infinitely customizable
  • Automate page setup
  • Manual page creation override
  • Easy configuration wizard
  • Toggle pages in navigation
  • Shortcode library
  • Editable automated email system
  • Delay message follow-up
  • Membership importer
  • Create a Custom Configuration
  • Create as many configurations as you like
  • Give each setup a name
  • Users can have Multiple Membership
  • Make your system public
  • Build a private membership system
  • Multisite protection managed from the network admin
  • Global settings
  • Free membership system
  • Paid membership
  • 2Checkout
  • Accept manual payments
  • PayPal Single
  • PayPal Standard
  • Stripe Single
  • Stripe Subscriptions
  • 25 default currency options
  • Taxamo for EU VAT regulations
  • Built-in invoice system
  • Coupon system
  • Offer a free trial
  • Place content behind a paywall
  • Protect pages
  • Protect posts
  • Content protect comments
  • Protect content below "read more" tag
  • Protect by custom post type
  • Protect by category
  • Protect specific menus
  • Protect specific menu items
  • Shortcodes to protect specific content
  • Protect specific URLs
  • Protect archive pages
  • Protect any WordPress special page
  • Protect content by user role
  • Protect dashboard access
  • Built-in BuddyPress integration
  • Built-in bbPress integration
  • Bulk actions for members admin page
Membership 2 Pro in your language
  • Spanish (Spain)
  • Portuguese (Portugal)
  • French (France)
  • View all