The current version of Paid Memberships Pro only allows users to have One Membership Level Per User at a time.

If a member checks out for a different membership level, their previous level is cancelled (any attached recurring subscriptions are cancelled) and they are given the new level.


Having just one level per user makes sense for a certain kind of membership site where different levels are basically upgrades or downgrades around one featured product. This is the user case PMPro was initially developed for.

However, some sites would benefit from allowing their users to purchase multiple membership levels at the same time or over time to add additional subscriptions to their one WP user account. The clearest example of this is an E-Learning type site where each membership level corresponds to a “course” on the site with users able to purchase one or more courses concurrently.


This is not about a new version of Paid Memberships Pro.

Work to allow users to purchase multiple memberships was started in 2013, but we have sidelined that work until further notice and a very alpha version of Multiple Memberships Per User as an Add On is now live on a few sites..

Update: The Multiple Memberships per User Add On is in Beta and available on GitHub. The Add On works well with the core PMPRo plugin, however most of our other Add Ons still need to be updated to respect the fact that users can have more than one membership level at a time. This work will take one to two years at least. Feel free to use the MMPU add on in the meantime, but also take a look at the work arounds below which often work as well or better than using the add on.

This post is about the different ways to work around having multiple memberships per user with the current version of Paid Memberships Pro.


Work Around 1: Use the Addon Packages Plugin

If you only need to support one time payments for access to each course/package/level/whatever, then you can use the Addon Packages plugin in lieu of regular membership levels.

View the Addon Packages Plugin
 

The basic steps to use PMPro Addon Packages for multiple membership levels would be:

  1. Setup a free membership level or paid “base” level for your members.
  2. Create a basic WordPress page for each course/level/package/etc.
  3. Enter the one time price for each page in the PMPro Addon Packages settings for the pages.
  4. Direct customers to the page which will have a link to checkout for the addon package.
  5. To lock down related content use the pmproap_hasAccess($user_id, $post_id) function in your code to check if $user_id has purchased access to $post_id.

This post describes how to sync Paid Memberships Pro with WP Courseware using Addon Packages with a page setup for each course. (This works independent of the official PMPro for WP Courseware bridge plugin.)


Work Around 2: Adding Fields to Checkout

Instead of having a separate membership level for each offering, you can have one main membership level (or a few based on other factors) and add a checkbox or other field to checkout for members to opt into each course or individual offering.

You can add fields using the PMPro Register Helper plugin API and then use code like this to adjust the price of your level at checkout based on the values of the fields:

Then you can use code like the following to check for the user meta value set by that field when handling access.

With a little bit of programming, you could even automate parts of this. Here is the outline of a nifty plugin to automate some of this:

  1. Add at least one core membership level.
  2. Add additional membership levels to be used as “options” at checkout for the main level. Mark the level as hidden.
  3. Use code to lookup all hidden levels (or a specific set of level ids) to create a PMPro Register Helper field at checkout for the main level.
  4. Upon checkout, adjust the cost of the main level based on the cost of the hidden option levels checked at checkout.
  5. Hook into the pmpro_has_membership_level filter to look if a user has the corresponding user meta for the field specified vs actually being a member of that level in PMPro.
  6. Similarly, hook into the pmpro_has_membership_access_filter filter to check those user meta fields in addition to the values in the pmpro_memberships_users table.

Many other addons or bits of code may still be confused about what “levels” a member has when for instance figuring out which mailing lists to subscribe a member to. And you might have to tweak some more code to handling these cases based on your setup. (This is why adding this functionality to core is so hard.) But this is the gist of how you can go about allowing multiple membership levels on a specific setup.


Work Around 3: Setup a Multisite Network

When running Paid Memberships Pro on a multisite network, each blog/site that PMPro activated on will have its own set of levels and members. So users in the network can have a membership on site A and a different membership on site B.

In some cases it might make sense to simply setup a new site for each membership offering rather than putting multiple offerings on the same WordPress site.

Setting up and running a multisite network is not always an easy thing to do. So if you don’t have other reasons for wanting to go with multisite, you might want to avoid doing this only to be able to offering multiple memberships.


Author’s gravatar

Jason:
Option number 3 is actually very easy. Create a subdomain, or even a folder within the primary domain, load a new copy of WP in the subdomain or folder, then load PMPro. So, it will look like this: http://www.mysite/Course1 and http://www.mysite/Course2. Then link everything carefully, and the user experience will be smooth. Yes, they will have to login to each course, but I think most people can deal with that.

Hope this helps. Mark

Reply
Author’s gravatar

I would be very useful, m not understand how the plugin PMPro That syncs with WP Courseware using PMPro Addon Packages. I tried to install it, but it does not work.

Reply
Author’s gravatar

I’ll make a note to write a longer tutorial on this plugin and method – in the meantime we can provide specific direction for your needs via our members forum – just open a new topic.

Reply
Author’s gravatar

If Someone were to do option 3 (multisite) and create subdomains for each service….. example

service1.mywebsite.com
service2.mywebiste.com
service3.mywebsite.com

Would the customers credit card treat each subscription for each site as an individual subscription? Meaning, can they have the a subscription at EACH website? Or would they treat is as the same website because of the core domain mywebsite.com?

Reply
Author’s gravatar

Yes – each site would have a unique configuration of PMPro, you would need to set up PMPro individually on each site (don’t “network activate” the plugin). Each subscription would be unique to each site; the user could have a subscription for service2.mywebsite.com and for service3.mywebsite.com

Reply
Author’s gravatar

Is it possible to add the custom page title in the invoice as currently it only shows the membership level and not what they are actually purchasing

Reply
Author’s gravatar

This is one of the features I am desperately waiting for. I see many people wanting this feature. Maybe we should think about doing some kind of funding campaign to pay for the feature. I am happy to chip-in.

Reply
Author’s gravatar

Yes, I couldn’t chip in much but I would also be willing to throw in a bit of cash to have this feature. There is another plugin with the feature to allow users to have multiple levels, but the styles do not look near as good as PMPro.

My issue is that I’m selling different video series piecemeal, so I need people to have one login and then be able to pay for access to each post category. I will continue to multiply the series of videos, so eventually I will have, e.g., 6 different series. If a member wants to buy access to two different series, I would have to setup a membership level with, e.g., “Video Series 4 and 6,” and I would have to do that for every member who bought more than one series. Moreover, I’m not sure he could pay for just series 6 if he already had series 4, or at least I would have to manually change his status after he bought series 6 and it changed his membership level to series 6 (then I manually change it to 4 and 6 since he already bought 4).

Is there any other workaround to my situation? I don’t really want to do a multi-site thing, because I just post my videos as blog posts and use blog_in_blog to show all the posts on a ‘page,’ and then I want everyone to see the posts and the excerpts, but then have to login or register/purchase to actually see the post (and I *love* the styles of PMPro with the buttons at the bottom of the excerpt and everything – much better than other plugins i’ve tried).

Thanks for any feedback

Reply
Author’s gravatar

As I need this fuctionality too, maybe we should indeed get together! How should we set this up?

Author’s gravatar

Is there an example of someone doing this? Like to see what this looks like from a UI standpoint. Thanks! -Patrick

Reply
Author’s gravatar

i had created a membership level i.e. Free Level (Price is 0).

So I want that One User can signup this level only one time.

So is this Possible in PM PRO.

Reply
Author’s gravatar

I’d expected this to be part of PMP, I’ll take a look at the workarounds but they don’t sound ideal, this could be a blocker for me.

Reply
Author’s gravatar

If you need multiple memberships per user, you should find another system. It’s not on our immediate road map anymore, although I agree it would be great. Let me know what you end up using.

Reply
Author’s gravatar

Jason I’ve been using the workaround where the user level is free but they pay for access to pages. The problem is now I cannot offer discounts for access to the pages. Is there any way to do this?

Author’s gravatar

Option 2 is good. Does the option expire/renew with the base membership? Is there a practical example of the access handling?

Reply
Author’s gravatar

hello
are there any new about the multiple Membership Level Per User , i have tray to organise my website with the three solution but no one is optimised , imagine you are using a multiple premium plug in and them , , you must pay for each site ? , imagine you have a different subscription date one is monthly another is every quarter , not easy at all to put the solution in real service website with a multiple option , we must find a solution , do you have any idea how we can help our participe to empower the team to do this work ,

PS :if you are currently developing some things , in this area of the plug in you must integrate a prorated payment in

thank you for all what you are doing
wish you the best
Amine

Reply
Author’s gravatar

Unfortunately, not offering multiple membership levels per user is a deal breaker for my use-case. Loved everything else about paidmembershipspro.com.

Reply
Author’s gravatar

If you find another solution, let me (and others) know here so we know where to direct people that need this feature. Thanks.

Reply
Author’s gravatar

It is also a show stopper for me – I need to fnd another plugin. Too bad I actually liked PMPro

Reply
Author’s gravatar

Any news on being able to offer discounts codes using the free user level workaround where they pay to access specific pages? After battling with EventEspresso for months, I was so excited for PaidMembershipPro… but this definitely looks like more roadblocks/deal-breakers. Anyone have any recommendations for an alternative?

Reply
Author’s gravatar

Re: not offering multiple membership levels per user, WooCommerce Memberships has that feature. I’ve not tried it at this point – there is no trial nor free version.
Your software looks cool, I’m surprised you don’t implement this feature…

Reply
Author’s gravatar

I just found out my customers can’t access more than 1 membership and creating a separate user isn’t practical as it also needs a separate email address.
I feel thrown in the deep end now that I have set everything up with PMPro and realise there is no ”easy” workaround (the addon option is expensive at $200/year!) or that nobody is working on developing this 🙁
I now have many users and implementing another plugin would mean starting everything from scratch and emailing everyone individually 🙁 🙁 🙁

Reply
Author’s gravatar

Sorry for the situation you are in. If you can’t afford the PMPro Plus membership, you can try to find the addons on GitHub.com to use for free. If the work arounds won’t work for you, then you should consider using a different membership plugin.

We’ve tried to be upfront about this limitation of the plugin. Sorry if it caught you off guard.

Reply
Author’s gravatar

Jason, how much would it cost to fund this feature?

Reply
Author’s gravatar

We’re working on an addon to allow for MMPU and hoping to have it ready to share sometime this summer. When released, it very likely won’t work with some of our other addons. Over time we will update all of our addons and gists to work in an MMPU context. Use our contact form to email us, and I will put you in touch with the developer we are working on the addon with, and they can likely help you to get setup on it ASAP for a fee. Include as much information as possible about your project and budget.

Reply
Author’s gravatar

Any updates on multiple memberships per user? I have a one-off case that would be useful for testing right now, and I am looking a scenario quite soon where I’d want to use it in a more serious way (syndicated content with optional training materials as an additional membership).

cheers… -Adam

Author’s gravatar

Some of the updates have been moved into the core plugin already. We have an addon in alpha that will actually let you checkout for multiple memberships at a time.

https://github.com/strangerstudios/pmpro-multiple-memberships-per-user

We’re now working on getting our addons updated to support this. Nearly all of them break in some kind of way when the one level per user assumption is broken. We’re also working for the documentation. We can help answer Qs in the forums.

Author’s gravatar

Thanks, Jason, I’ll take a look at the alpha. I am using a number of the add-ons (listed), so the level of breakage would be a concern.

Paid Memberships Pro – Add Name to Checkout Add On
Paid Memberships Pro – Advanced Levels Page Shortcode Add On
Paid Memberships Pro – Better Logins Report Add On
Paid Memberships Pro – MailChimp Add On
Paid Memberships Pro – Member Homepages Add On
Paid Memberships Pro – Member RSS Add On
Paid Memberships Pro – Nav Menus Add On
Paid Memberships Pro – Register Helper Add On
PMPro Customizations
PMPro Reason For Cancelling

Sounds like I should spin up a clone of the site to test this stuff, to the extent possible.

cheers… -Adam

Author’s gravatar

> Paid Memberships Pro – Add Name to Checkout Add On
This one should be okay.

> Paid Memberships Pro – Advanced Levels Page Shortcode Add On
The MMPU changes the levels page itself, so the ALPSC would probably override that. Might be okay if you don’t need the shopping cart lite that MMPU adds.

> Paid Memberships Pro – Better Logins Report Add On
Should be okay.

> Paid Memberships Pro – MailChimp Add On
Actually the first add on we’re working on updating for MMPU. Should have an update next week.

> Paid Memberships Pro – Member Homepages Add On
This will obviously get confused if a user has > 1 level. Will just redirect them to the first level the code finds.

> Paid Memberships Pro – Member RSS Add On
I think this one should be okay. I would have to look at it again.

> Paid Memberships Pro – Nav Menus Add On
This will likely get confused about which menu to show for users with > 1 or again will just choose the first level seen.

> Paid Memberships Pro – Register Helper Add On
This should be okay in general. But I can imagine some things breaking with MMPU.

> PMPro Customizations
Depends on the customizations obviously.

> PMPro Reason For Cancelling
I think this one should work as well, but I haven’t tested it.

Author’s gravatar

Hey Jason,
Is there any option to restrict the NONE membership level to override any other premium memberships. Because in my case a Platinum member if buys a product without any membership level attached his Platinum member gets automatically cancelled.
So kindly let us know the solution if there is any settings or code for any specific level to restrict from getting subscribed.

Reply
Author’s gravatar

Sounds like we would need more information about your setup to help you. Please post to the member forums along with info on what other plugins (e.g. sounds like you are using WooCommerce or something to sell “products without any membership level attached”.

Reply
Author’s gravatar

I have many memberships levels, each level is different to other, so I want that a member can buy whenever they want two one or all memberships levels, I mean they have multiples levels without cancel the other one, so is possible that now?

Reply
Author’s gravatar

Is this updated? https://github.com/strangerstudios/pmpro-multiple-memberships-per-user

Reply
Author’s gravatar

The add on is stable and being used by Beta sites currently. You are welcome to install and try to use it in a development environment. We hope to fully release this add on in the coming weeks.

Reply
Author’s gravatar

That would be great! I will try and install it. thank you! Looking forward to it.. 🙂

Author’s gravatar

About 6 weeks ago, you said, “We hope to fully release this add on in the coming weeks.” Any update on the progress of this? An estimated date would be nice. This could make a big difference for us and what route we choose to go now vs. the long run. Please let me know, thanks in advance.

Author’s gravatar

The plugin is stable and functional. You can find it here: https://github.com/strangerstudios/pmpro-multiple-memberships-per-user

Most add ons do not work with it yet. We’re working on a public list of those add ons to know which aren’t affected by it, which are (anything that fires on changing membership levels or affects the checkout page/pricing), and updates as we fix the add ons for compatibility.

It will likely take a year at least to update all of our add ons. If you are only using a handful of our add ons, you can test if they work for you with this and maybe help us to update them early for you.

Hope this helps.

Author’s gravatar

HI jason,

Good to hear the plugin is stable and functional.

“Most add ons do not work with it yet” . I presume you are talking about the PMP Addons. When are hoping for all this to be fixed?

(We are planning for the future so I we are eager for a response)

Author’s gravatar

Hi Thomas,

Yes, Jason did mean PMPro Add-Ons, we will be working on the compatibility of our PMPro Add-Ons over the next year or two. We will also be adding a feature to our Add-On pages with an indicator to state whether or not the relevant Add-On is compatible with MMPU or not.

Author’s gravatar

Hey guys….wow we desperately need this plugin to work for us…..I thought it was working however when I create or edit a user I can select the Group but the drop down for Membership level is empty. I’ve tested creating separate groups and putting levels in them and same then. Yes I’ve selected the option to allow more than one selection in a group.

Any ideas?

Reply
Author’s gravatar

Oh I figured it out… Before I installed this beta plugin I had “Disable New Signups” checked as I’m doing my registrations a different way….but with this plugin it causes the behavior I mentioned above….

So it might still work for us as long as people can’t figure out how to go manually register.

Reply

Leave a Reply

Your email address will not be published. Required fields are marked *