After over a year of development, we are thrilled to announce that Paid Memberships Pro v3.0 Beta is now available for testing. This new version brings a host of exciting features and enhancements, ensuring a more robust and versatile membership experience for both site administrators and users.

Along with these new features, the 3.0 release also makes irreversible changes to the structure of your membership site data. For this reason, we are offering this early v3.0 Beta version, along with future release candidates.

We will maintain this post for all Beta versions we release. We are currently on Paid Memberships Pro v3.0 Beta 4.

Note: The v3.0 Beta 4 version is not for use in a live or production membership site. Once we move into the release candidate stage, we will provide advice on when these versions are safe to use on a staging site.

Banner Image for PMPro v3.0 Beta Release

Overview of Key Features in v3.0

  • New Subscriptions Table: Payment subscriptions are now tracked using a new table, offering more accurate and detailed subscription management.
  • Removed cancelled Order Status: With the addition of the Subscriptions Table, we no longer need to rely on the last order’s status to track subscription status and payment details. v3.0 includes an upgrade script that changes all orders with cancelled status to success.
  • Merged Add Ons into Core: Multiple Memberships Per User (MMPU), Stripe Billing Limits, and Cancel On Next Payment Date Add Ons have been merged into the core PMPro plugin.
  • New Edit Member Page: This Single Membership Dashboard page gives admins a deeper view of a single member’s profile information, memberships, subscriptions, orders, and more.
  • Admin Membership Access Setting: Admins can now toggle between membership access levels to view the site with and without access. This will help admins better preview, test, and troubleshoot content access restrictions.
  • Content Visibility for WordPress Blocks: Restrict content by membership level in all core WordPress blocks.
  • Single Membership Level Block: Display information about a specific membership level with ease. This will help sites build beautiful membership levels or pricing pages with the features of the WordPress Block Editor.
  • Overhauled Blocks: All of the PMPro page and content blocks are now overhauled to use more modern WordPress block development standards, so you can customize the spacing, colors, alignment, and more for all PMPro page and feature blocks.
  • Enhanced User Interface and User Experience: Overhauled UI across administrative screens to improve usability and membership site management.
  • Improved Offline Payment Processing: Customize the term “Check” when collecting offline payments.
  • Bug Fixes and Refinements: Numerous bug fixes and enhancements to ensure a more stable and efficient platform.

Video: v3.0 Sneak Peek

About Multiple Memberships Per User and Membership Checkout

For some gateways and level setups, the legacy Multiple Memberships Per User Add On allowed members to purchase multiple levels in a single checkout.

This will not be offered in the official v3.0 release, which merges MMPU features into core PMPro.

Update (January 4, 2024): We are actively working on a plugin for MMPU (Legacy) that will allow members to purchase multiple levels in a single checkout for Stripe onsite checkout and Braintree gateways only.

These are the only gateways that we can confidently support with this legacy Add On.

Note that this functionality is not going to be supported indefinitely. We are offering this MMPU (Legacy) plugin as an intermediate option for sites to upgrade to 3.0 and maintain their current multiple levels checkout experience.

Here are some factors that went into the decision to no support multiple levels in single checkout and how this may affect sites that were using this feature:

  • One main goal for PMPro v3.0 was to merge the MMPU Add On into the core plugin. This brings MMPU out of “beta” and gives us a more robust base to build on for sites utilizing multiple levels per user.
  • While preparing that merge, we realized that the feature allowing users to check out for multiple levels at the same time caused many conflicts that we wouldn’t be able to fully address for all of our users.
    • First, the multiple membership checkouts feature was already not supported by all gateways.
    • Even for supported gateways, the gateways are also moving their development in a direction where support could be restricted or removed later. (e.g. Stripe’s offsite option, Stripe Checkout, doesn’t work with this. Also, the rise of “Secure Customer Authorization” and “payment intents” means that credit card companies and the gateways want explicit confirmation for each individual subscription created.)
    • Many of our checkout-related Add Ons are not compatible with this specific feature.

It was not an easy decision to drop support for multiple subscriptions in one checkout, but ultimately we decided to push development in that direction.

In the short term, sites can use the MMPU (Legacy) plugin or continue to run PMPro 2.12.x with the MMPU Add On.

For about 1 year or so after the 3.0 release, we will continue to release important security updates for PMPro 2.12.

You won’t be able to run the old MMPU plugin with PMPro 3.0, but we are looking into a way to run a legacy version of the plugin that includes the multiselect levels template and some form of support at checkout to process multiple levels at once.

Some of the UX might change, but it would be a better base that we can maintain for a bit longer. If we can get this to work, we should be able to support this for 1-2 years further.

In the medium term, many of our Add Ons and future updates to our checkout code and UI won’t be compatible with the feature to process multiple subscriptions in one checkout.

In the long term, we expect the gateways to drop support for the way we are processing these checkouts.

We have ideas for longer term support of this use case of selecting multiple levels in one checkout, but we don’t have concrete plans to work on this yet.

We hope to have more details before the time we would fully deprecate the MMPU legacy plugin if we can get that working.

Before officially releasing v3.0, we will post information on our blog about how sites with specific setups (e.g. MMPU) should prepare for upgrading. Please stay tuned to our blog and mailing list.

If your site falls in this unique setup case, be careful to push the upgrade button on the 3.0 release when it goes out.

Testing Guidelines

We encourage all developers who maintain a plugin that integrates with Paid Memberships Pro to test with this version.

Please note: This beta release is intended for testing purposes only and should not be used on production sites. It is essential to test in a safe, staging environment to avoid any disruption to your live site. Do not connect this version to your live payment gateway or live membership site.

Subscriptions Table and Multiple Memberships Per User Features

  • For plugins and payment gateways, developers should focus on testing compatibility with the new Multiple Memberships Per User (MMPU) features built into PMPro.
  • Note that the built-in “Testing” gateway option in Paid Memberships Pro does not leverage the subscriptions table at this time. Subscriptions will only be created for a site using the Check payment gateway or for a site connected to a true payment gateway in test mode (or live mode, although you should not use this version for live gateways).
  • Plugins should also ensure that any payment-related code is integrated with the new subscriptions table.
  • Theme Authors should begin work on updating all custom frontend page templates to match the newest versions in this PMPro v3.0 Beta 1, 2, 3 v3.0 Beta 4.
  • If you find that your plugin or payment gateway cannot be made MMPU-compatible, you can mark the code as incompatible using the pmpro_mmpu_incompatible_add_ons filter.
 * Mark the plugin as MMPU-incompatible.
function my_mmpu_incompatible_add_ons( $incompatible ) {
    $incompatible[] = 'PMPro Sponsored Members Add On';
    return $incompatible;
add_filter( 'pmpro_mmpu_incompatible_add_ons', 'my_mmpu_incompatible_add_ons' );

Testing The New Edit Member Page

Plugin authors should examine any settings they have hooked into the WordPress User Edit screen and ensure that the details are showing as intended on the new Edit Member page.

How to Download the Beta Version

Click here to download PMPro v3.0 Beta 4 (Warning: For Testing Only)
Last updated: January 14, 2024

Important: This beta is for testing in non-production environments only.

We Want Your Feedback

Anyone that is doing testing with this version should feel free to share feedback, bugs, warnings, issues, and anything else worth reporting. Here’s how to share your feedback.

Your insights and contributions are invaluable to the improvement of PMPro.

Working Changelog for v3.0 (Last Updated 2024-01-14)

  • FEATURE: Now tracking payment subscriptions using a new subscriptions table. (@dparker1005)
  • FEATURE: The Multiple Memberships Per User Add On has been merged into the core PMPro plugin. #2250 (@dparker1005)
  • FEATURE: The Stripe Billing Limits Add On has been merged into the core PMPro plugin. All gateways now support billing limits. #2384 (@dparker1005)
  • FEATURE: The Cancel On Next Payment Date Add On has been merged into the core PMPro plugin. #2389 (@dparker1005)
  • FEATURE: Added a new Edit Member page for editing a user’s membership information. #2657 (@kimcoleman, @ideadude, @dparker1005)
  • FEATURE: Added a “Admin Membership Access” setting to the toolbar to allow admins to choose whether they want to view the website with full membership access, no membership access, or with their current membership levels. #2541 (@andrewlimaza)
  • FEATURE: Added “content visibility” settings to all core WordPress blocks to allow restricting by membership level. #2680 (@MaximilianoRicoTabo)
  • FEATURE: Added the Single Membership Level block to display information about a specific membership level. #2654 (@JarrydLong, @kimcoleman)
  • ENHANCEMENT: Added a script that will run on upgrade to change all cancelled orders to success so that we can remove cancelled status. #2025 (@dparker1005)
  • ENHANCEMENT: Moving the “Require Membership” settings in the block editor to a new block editor panel. #2445 (@dparker1005)
  • ENHANCEMENT: Added a setting for customizing the word “Check” when collecting offline payments. #2655 (@MaximilianoRicoTabo)
  • ENHANCEMENT: Now prefixing the level and discount code URL parameters at checkout. #2506 (@dparker1005)
  • ENHANCEMENT: Overhauled UI across administrative screens. #2667 (@kimcoleman)
  • ENHANCEMENT: Updated front-end pages and pre-headers. (@kimcoleman, @dparker1005)
  • ENHANCEMENT: Now setting collate when creating database tables. #2566 (@dparker1005)
  • ENHANCEMENT: Adding a $name parameter to the pmpro_user_taxonomy_args filter. #2456 (@mircobabini)
  • ENHANCEMENT: Now sending payment descriptions to Stripe when users pay via Stripe Checkout. #2744 (@dparker1005)
  • BUG FIX/ENHANCEMENT: Now storing payment information in individual orders instead of in user meta. #2398 (@JarrydLong)
  • BUG FIX/ENHANCENENT: Now showing “Credit Card” instead of “Pay With Credit Card” on the Update Billing page when using the Stripe payment request button. #2684 (jahidhasan018)
  • BUG FIX/ENHANCEMENT: Now preventing multiple user field groups with the same name from being created. #2625 (@MaximilianoRicoTabo)
  • BUG FIX/ENHANCEMENT: Now only calculating order tax and total when creating a new order. #2703 (@dparker1005)
  • BUG FIX/ENHANCEMENT: Defaulting tax on MemberOrders to a float for consistency and to avoid potential edge cases. #2656 (@mircobabini)
  • BUG FIX/ENHANCEMENT: Updated our “Lost Password”/”Reset Password” flow to track whether a password reset was initiated by Paid Memberships Pro. If not, some functions related to password reset will be disabled to avoid conflicting with other plugins. #2595 (@andrewlimaza)
  • BUG FIX/ENHANCEMENT: Now using pmpro_cancelMembershipLevel() when processing an expiration. #2762 (@dparker1005)
  • BUG FIX: Fixed an issue in the WordPress dashboard where the site locale would be loaded instead of the user locale. #2707 (@andrewlimaza)
  • BUG FIX: Fixed an issue where admin_only user fields would still show on the frontend profile if the current user was an administrator. #2432 (@dparker1005)
  • BUG FIX: Fixed an issue where the annual membership report would not show cancellations. #2630 (@MaximilianoRicoTabo)
  • BUG FIX: Fixed an incorrect class name in the profile edit fields. #2632 (@patric-boehner)
  • REFACTOR: Updated how we enqueue blocks to follow most recent WordPress standards. #2647 (@briansantos10)
  • REFACTOR: Removed deprecated and unused code in the Stripe gateway integration code. #2428 (@dparker1005)
  • REFACTOR: Changing uses of pmpro_getOption() to get_option(). #2491, #2493, #2494, #2495 (@JarrydLong, @MaximilianoRicoTabo)
  • DEPRECATED: No longer using $pmpro_levels global variable. #2666 (@dparker1005)
Was this article helpful?