Description
The most trusted way to build a membership site on WordPress.
Paid Memberships Pro is a complete solution to secure your content and create a seamless membership experience on WordPress.
With over 28 ways to protect content, advanced membership management, and built-in recurring payment gateways, we provide you with everything you need to create an efficient and user-friendly membership site.
Read about all of the plugin’s features at Paid Memberships Pro or launch a personal demo site now to test drive the full plugin and premium Add Ons for free.
Built For Your Unique Type of Membership Site
PMPro supports any kind of member-focused business or organization. With over 12 years of experience working with creators like you, this plugin delivers on what you need today and in the future. Select a use case to learn more about how we specialize in supporting your unique business:
- Associations & NPOs
- Blog & News
- Communities
- Courses & Coaching
- Directory & Listings
- Paid Newsletters
- Podcasting
- Private Video
You can also browse Case Studies for successful membership sites that are using PMPro to get paid for their content and reach their personal or business goals with 100% open source software.
“PMPro is very user-friendly, affordable and scalable. It has all the features you would need to run a fully-functioning membership site.”
Katie Prescott, Founder, Abridge Academy
28 Types of Content Restrictions
- Restrict Default Content: Show sneak peaks or completely hide restricted content
- Restrict Other Content: Secure content like courses, videos, forums, products, events, podcasts, and more
- Limit or “Meter” Access: Limit access to a specific number of views before hitting the paywall
- Content Dripping: Drip feed access based on membership start dates
- Personalized Content: Unique pages and navigation menus for each membership level
- Directories & Profiles: Browse public or members-only directories for a robust community
- WordPress Multisite: Secure content across your network with a single login
Membership Management Features
- Unlimited Levels: Create distinct pricing and content access for each level
- Multiple Memberships Per User: Increase LTV by selling multiple membership types, allowing members to hold more than one active subscription simultaneously (now built into core PMPro v3.0+).
- Group Memberships: Offer child accounts linked to a paying parent account for umbrella or corporate memberships
- User Fields by Level: Capture custom profile info by membership level
- Email Communications: Customize content and design of every message
- Sync Roles and Levels: Define custom capabilities based on your membership features
Built-in Ecommerce & Recurring Payments Features
All of our payment gateways are included in the plugin. Choose from Stripe, PayPal, Authorize.net, or Braintree. You can offer multiple gateway options at checkout including PayPal Express or manual and offline payments, like Bank Transfer, Check, and Venmo.
- Flexible Pricing: Configure free, one-time payment, or recurring subscription levels
- Multiple Gateways: Integrate with Stripe, PayPal, and more
- Multiple Payment Methods From credit card, Apple Pay, bank transfer, and “buy now pay later”
- Customizable Trials: Offer different trial periods from your recurring billing
- Proration and Pausing: Offer custom proration rules and pausing options
- Discount & Gift Codes: Offer discounts, run sitewide sales, and track success
Seamless Member Experience Features
- Front-end user profiles and editing
- Front-end user registration
- Front-end user login and password recovery
- Custom form fields
- Conditional logic for form fields
- Membership account dashboard
- Membership invoices and billing information pages
- Custom member emails
- Restrict WP dashboard access
- Hide the WP toolbar
- Conditional nav menus
Admin Tools and Reports
Add members manually, import/export members, require membership approval, and manage membership roles.
Track sales & revenue, signups, member activity, and more in detailed reports.
Install a web app on your mobile device or table for real-time updates on membership site reporting.
Site Enhancements
Extend functionality with affiliates, page builders, themes, and landing pages.
- Page Builder Compatibility: Gutenberg Block Editor, Full Site Editing, Elementor, Divi, Beaver Builder, Oxygen Builder, SiteOrigin
- Integrate With Popular Platforms: WooCommerce, BuddyPress/BuddyBoss, Mailchimp, Zapier
- Use With Your Favorite LMS: LifterLMS, LearnDash, Sensei LMS, and Tutor LMS
“Recommended to anyone from beginner to experienced coders. I tried MemberMouse and MemberPress and they both lacked critical features that I wanted for my member site. PMPro has all the features I need (Social Login, ability to gift, multiple membership levels, works with BuddyPress) and more. I can easily customize to make it look great too. If I have questions, which is often since I am a beginner in WordPress and know nothing about coding, they are quick to respond and always find a way for me to do exactly what I want. Super happy. Would recommend to anyone from beginner to experienced coders!”
@efsluys via WordPress.org 5-star Review
Documentation, Support, Localization
Access free support here on WordPress.org or reach out on our contact form. Refer to our information on premium support if you would like more help.
Our website has extensive documentation to assist you in building your membership site.
We also offer unique content hubs, which explore the 8 most popular membership site use cases and how to build a successful membership site on WordPress.
Developer Friendly
Open source, REST API support, extensive hooks, and tools for easy customization.
Our website offers over 340 examples on how to use our action and filter hooks to customize your membership site.
Free WordPress Theme
Our official theme, Memberlite, is built specifically for membership sites. Memberlite has deep integration with Paid Memberships Pro to offer advanced features for logged-in/out users and works alongside your favorite page builders, like the Block Editor and Elementor.
Popular Add Ons
Extend the features of your membership site or integrate with third-party services through our library of over 65 Add Ons. Some of the most popular features include:
- Integrate memberships with email marketing platforms including Mailchimp
- Manage Affiliates with Add Ons or use a popular third-party systems like AffiliateWP
- Let members log in or join with their social media profiles
- Design your site using popular Page Builders like Elementor, Page Builder by SiteOrigin, Beaver Builder, and Divi. We offer 15 core membership blocks for the WordPress Block Editor (Gutenberg)
- Optional WooCommerce Integration to offer members-only discounts in your shop or sell membership as a product (WooCommerce is not required. Recurring payments and gateway integration is built into PMPro)
- Create a sales landing page with banners to run a sitewide or flash sale
- Offer members-only events with Events Manager, The Events Calendar, and Sugar Calendar
Paid Memberships Pro is a free membership plugin for WordPress
Our plugin is 100% GPL and available from the WordPress repository or on our site at www.paidmembershipspro.com. The full version of the plugin is offered with no restrictions or additional licenses required. Developers should get involved at our GitHub page.
Compare PMPro to Other Membership Plugins and Platforms
Are you comparing Paid Memberships Pro with another membership plugin or third-party platform? We have a series of product comparison guides that will help you see the distinct features of PMPro as compared to other options, including:
…and more. You can read all of these comparision guides here.
Screenshots
Blocks
This plugin provides 20 blocks.
- PMPro Page: Billing Dynamic page section to display the member's billing information. Members can update their subscription payment method from this form.
- Single Membership Level Displays a single membership level's information and pricing with individual level components.
- PMPro Page: Account Profile Dynamic page section that displays the member's profile as read-only information with a link to edit fields or change their password.
- PMPro Page: Account Invoices Dynamic page section that displays a list of the last 5 membership invoices for the active member.
- PMPro Page: Confirmation Dynamic page section that displays a confirmation message and purchase information for the active member immediately after membership registration and checkout.
- PMPro Page: Account Memberships Dynamic page section to display the member's active membership information with links to view all membership options, update billing information, and change or cancel membership.
- PMPro Page: Account (Full) Dynamic page section to display the selected sections of the Membership Account page including Memberships, Profile, Invoices, and Member Links. These sections can also be added via separate blocks.
- Login Form Dynamic form that allows users to log in or recover a lost password. Logged in users can see a welcome message with the selected custom menu.
- PMPro Page: Cancel Dynamic page section where members can cancel their membership and active subscription if applicable.
- Content Visibility Block Nest blocks within this wrapper to show or hide content by membership level, login status, or for non-members.
- PMPro Page: Account Links Dynamic page section that displays custom links available for the active member only. This block is only visible if other Add Ons or custom code have added links.
- PMPro Page: Account Profile Edit Dynamic form that allows the current logged in member to edit their default user profile information and any custom user profile fields.
- PMPro Page: Invoice Dynamic page section that displays a list of all invoices (purchase history) for the active member. Each invoice can be selected and viewed in full detail.
- Membership Levels and Pricing Table Dynamic page section that displays a list of membership levels and pricing, linked to membership checkout. To reorder the display, navigate to Memberships > Settings > Levels.
- Membership Checkout Form Dynamic form that allows users to complete free registration or paid checkout for the selected membership level.
- Membership Checkout Button Inserts a button that links directly to membership checkout for the selected level.
- Level Price The price text for this membership level.
- Level Expiration The expiration text for this membership level.
- Level Description The description for this membership level.
- Level Name The name of this membership level.
Installation
Download, Install and Activate!
- Go to Plugins > Add New to find and install Paid Memberships Pro.
- Or, download the latest version of the plugin, then go to Plugins > Add New and click the “Upload Plugin” button to upload your .zip file.
- Activate the plugin.
Use the Setup Wizard to Complete Initial Setup
After activation, you will be taken through a brief setup wizard to configure the plugin.
Refer to our Initial Setup Tutorial guide for additional help getting started.
More Installation and Setup Documentation
FAQ
-
Do I need to know any coding to use this plugin?
-
No, Paid Memberships Pro does not require any coding knowledge. The plugin is designed to meet all levels of WordPress experience. At the same time, our plugin is very developer-friendly and extendible.
-
Does the Paid Memberships Pro work with any WordPress theme?
-
Yes. PMPro will work with any properly coded theme. However, some themes may cause conflicts with the plugin. If you find a styling issue with your theme please create a post in the community forum.
-
Does the plugin work with caching plugins?
-
Absolutely. We have a complete guide on using a caching plugin or your host’s caching methods with Paid Memberships Pro on our website if you want to explore this topic more.
-
Does PMPro restrict access to wp-login.php when the plugin is active?
-
PMPro does not restrict access to the wp-login.php page when active. This allows your administrator users to leverage advanced security plugins, like Two-Factor and more, so that you can keep your membership site secure. We do include a frontend login page for your members to use for logging in and resetting their password.
-
Is Paid Memberships Pro Multisite or Network Compatible?
-
“Supporting multisite” means different things to different people. This guide covers the three primary ways you can use Paid Memberships Pro in a network.
Out of the box PMPro will basically act as a stand alone plugin for each site. Each site has its own list of membership levels, members, payment settings, etc.
Our Member Network Sites Add On allows members to choose a site name and title at checkout and will set up a network site at checkout.
Our Multisite Membership Add On allows you to manage memberships at the ‘Main’ Network site and provide or restrict access on other Network Subsites.
If you would like more help using PMPro on a network install, reach our via our contact page.
-
I need help installing, configuring, or customizing Paid Memberships Pro.
-
Please visit our support site for more documentation and our support forums.
-
I found a bug in Paid Memberships Pro.
-
Please post it in the WordPress support forum and we’ll fix it right away. Thanks for helping.
-
Does PMPro Support X?
-
Not sure? You can find out by doing a bit a research.
Reviews
Contributors & Developers
“Paid Memberships Pro – Content Restriction, User Registration, & Paid Subscriptions” is open source software. The following people have contributed to this plugin.
Contributors“Paid Memberships Pro – Content Restriction, User Registration, & Paid Subscriptions” has been translated into 20 locales. Thank you to the translators for their contributions.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
3.0.6 – 2024-07-01
- SECURITY: Fixed an authenticated SQL injection vulnerability in the Orders and Discount Codes list tables. (Thanks, Trương Hữu Phúc from Patchstack)
- BUG FIX: Fixed PHP errors when calling
pmpro_is_checkout()
too early in the page load. (@kimcoleman)
3.0.5 – 2024-06-24
- SECURITY: Fixed a vulnerability in the 2Checkout payment integration that could allow unauthenticated users to move orders from the “pending” status to the “success” status (Thanks, Rafie Muhammad from Patchstack)
- BUG FIX: Fixed an incorrect query when using the “Show Only New” or “Show Only Renewals” filters on the sales report. (@ideadude)
3.0.4 – 2024-05-08
- ENHANCEMENT: Now detecting whether a webhook is set up in Stripe and, if not, showing a button to set one up. Webhooks are also automatically set up after the Stripe Connect flow is created. #2976 (@dparker1005)
- ENHANCEMENT: Added a
group
attribute to the[pmpro_member]
shortcode to show specific member information in the context of a level group. #2966 (@kimcoleman) - ENHANCEMENT: Added a new “gateway” column to the Orders tab of the Edit Member page. #2970 (@andrewlimaza)
- ENHANCEMENT: Added a new “gateway” column to the Subscriptions tab of the Edit Member page. #2979 (@andrewlimaza)
- ENHANCEMENT: Adjusted the hierarchy and names for PMPro pages generated as part of the initial plugin setup. #2967 (@kimcoleman)
- ENHANCEMENT: Added the ID for each group to the
Memberships > Settings > Levels
settings page. #2978 (@andrewlimaza) - BUG FIX/ENHANCEMENT: Updated the
+ New > Member
admin bar menu item to be visible to any user with theedit_users
capability. #2968 (@kimcoleman) - BUG FIX: Fixed an issue where the login redirect may incorrectly redirect back to the login page. #2971 (@andrewlimaza)
- BUG FIX: Fixed an issue where purchasing a recurring membership with PayPal Express for a level that the user already had would immediately cancel the new payment subscription. #2972 (@dparker1005)
- BUG FIX: Fixed PHP deprecation warnings on the User Fields settings page for some versions of PHP. #2975 (@dparker1005)
- DEPRECATED: No longer showing the “Register a webhook” popup after connecting to Stripe since this process is now automated. #2976 (@dparker1005)
3.0.3 – 2024-04-18
- ENHANCEMENT: No longer making API calls to pull subscription data from Stripe or PayPal Express when we do not have gateway credentials. #2956 (@mircobabini)
- ENHANCEMENT: Added new filters
pmpro_subscription_gateway_object
andpmpro_order_gateway_object
to allow developers to modify gateway objects before they are used. #2962 (@mircobabini) - ENHANCEMENT: Added a new filter
pmpro_stripe_before_retrieve_webhook_event
to allow developers to modify the Stripe API key before retrieving a webhook event. #2962 (@mircobabini) - BUG FIX: Fixed an issue where nonce verification checks may fail when creating a new user at checkout. #2963 (@dparker1005)
- BUG FIX: Fixed issues where users’ roles could be unintentionally changed on the Edit Member page by making the “Role” field read-only. #2961 (@dparker1005)
- BUG FIX: Fixed an issue where the status for an old membership level would be
changed
instead ofadmin_changed
when an admin modified a user’s membership. #2965 (@dparker1005) - BUG FIX: Fixed PHP errors in the PMPro “Recent Members” Dashboard widget when a user that would be shown on that list was deleted. #2964 (@andrewlimaza)
- BUG FIX: Added some missing global variables on admin pages. #2955 (@mircobabini)
- BUG FIX: Fixed missing CSS color variable. #2955 (@kimcoleman)
- BUG FIX: Fixed variable name when generating an error message in the Stripe webhook. #2955 (@mircobabini)
- BUG FIX: Fixed an issue where the Braintree webhook log may not include transaction details. #2955 (@mircobabini)
- REFACTOR: Removed duplicate array elements throughout the codebase. #2955 (@mircobabini)
3.0.2 – 2024-04-11
- ENHANCEMENT: Added settings to disable custom page templates when they are out of date. #2923 (@dparker1005, @kimcoleman)
- ENHANCEMENT: Now defaulting the “View: My Access” setting to “View with my access”. #2938 (@andrewlimaza)
- ENHANCEMENT: Added a new filter
pmpro_show_setup_wizard_link
to adjust whether the link to the setup wizard should show. #2372 (@andrewlimaza) - ENHANCEMENT: Added level group information to site health. #2931 (@dparker1005)
- ENHANCEMENT: Improved how custom page templates are displayed in site health. #2923 (@dparker1005)
- BUG FIX/ENHANCEMENT: Added a nonce when updating the order of level groups. #2930 (@dparker1005)
- BUG FIX/ENHANCEMENT: No longer removing quotes from discount code error messages at checkout. #2935 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Now supporting users without a role on the Edit Member page. #2942 (@dparker1005)
- BUG FIX/ENHANCEMENT: Updated some JS code used while processing PMPro form submissions to only run for PMPro forms. #2779 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Made the “discount code applied to your order” strings consistent for localization. #2941 (@dparker1005, @mircobabini)
- BUG FIX/ENHANCEMENT: Now including email template variables for the level ID and level name on the billable invoice email template. #2947 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Now only showing log-in errors if the user was not successfully logged in. #2949 (@dparker1005)
- BUG FIX: Fixed a fatal error when editing a level group on some versions of PHP. #2933 (@MaximilianoRicoTabo)
- BUG FIX: Fixed an issue where subscription creation would fail when using PayPal Express in Sandbox mode. #2944 (@dparker1005)
- BUG FIX: Fixed an issue where discount codes with unsupported billing details would not be highlighted on the Discount Codes list. #2928 (@MaximilianoRicoTabo)
- BUG FIX: Fixed an issue where using the MemberOrder::get_orders() method may incorrectly return an empty array when filtering by
discount_code_id
. #2929 (@dparker1005) - BUG FIX: Fixed an issue where a month would always be considered 30 days when renewing a level with an expiration date. #2945 (@dparker1005, @fisher2470)
- BUG FIX: Adding back the
pmpro_deactivate_old_levels
filter that was removed in 3.0. #2946 (@dparker1005) - BUG FIX: Fixed an issue where the Members List CSV Export could generate incorrect data when it was not ordered by user ID. #2811 (@rollsappletree)
- BUG FIX: Fixed a PHP warning when passing null to strtolower(). #2926 (@MaximilianoRicoTabo)
- BUG FIX: Fixed a PHP warning when passing null to esc_url(). #2939 (@dparker1005)
- BUG FIX: Fixed PHP deprecation warnings by declaring properties in the PMPro_Discount_Code class. #2936 (@MaximilianoRicoTabo)
- BUG FIX: Fixed PHP deprecation warnings by declaring properties in the PMProEmail class. #2934 (@MaximilianoRicoTabo)
- BUG FIX: Fixed some HTML tags that were being incorrectly escaped in the Admin Activity email. #2948 (@dparker1005)
- REFACTOR: Fixed some typos throughout the codebase. #2777, #2950, #2951 (@mircobabini)
3.0.1 – 2024-03-27
- ENHANCEMENT: Improved the admin UI on mobile devices. #2913 (@kimcoleman)
- ENHANCEMENT: Now hiding save messages when switching tabs on the edit member page. #2910 (@dparker1005)
- ENHANCEMENT: The “Generate pages” checkbox in the setup wizard is now checked by default. #2916 (@dparker1005)
- BUG FIX/ENHANCEMENT: Now only showing membership groups on the levels page if the group contains levels that will also be shown. #2917 (@dparker1005)
- BUG FIX: Fixed a fatal error caused by plugin conflicts with plugins triggering the
current_screen
action beforeadd_meta_box()
is defined. #2911 (@dparker1005) - BUG FIX: Fixed a plugin conflict that may cause the “Require Membership” metabox not to show when editing a post. #2911 (@dparker1005)
- BUG FIX: Fixed an issue where the “Add New Level” button on the levels settings page would not work. #2905 (@dparker1005)
- BUG FIX: Fixed an issue where the expired/cancelled date would not show in the members list when filtering by old members. #2908 (@dparker1005)
- BUG FIX: Fixed an issue where the “Edit Member” link on the edit user page was visible to everyone. #2903 (@dparker1005)
- BUG FIX: Fixed an issue where custom code using the
pmpro_account_membership_expiration_text
filter would no longer run. #2906 (@dparker1005) - BUG FIX: Fixed an issue where custom code passing an array of statuses to
pmpro_next_payment()
would no longer work. #2904 (@dparker1005) - BUG FIX: Fixed an issue where discount codes could not be applied when using an outdated checkout page template. #2921 (@dparker1005)
- BUG FIX: Fixed a PHP warning when creating a new membership level. (@dparker1005)
- BUG FIX: Fixed a PHP warning when passing NULL to
pmpro_no_quotes()
. #2909 (@ipokkel) - BUG FIX: Fixed a PHP warning when passing NULL as a value to
pmpro_setOption()
. #2915 (@dparker1005) - BUG FIX: Fixed a PHP warning when saving a restricted post in the block editor. #2919 (@dparker1005)
- BUG FIX: Fixed the formatting of the “Status” column of the Stripe webhook checker. #2918 (@dparker1005)
- REFACTOR: Changed uses of
pmpro_getOption()
toget_option()
. #2914 (@dparker1005)
3.0 – 2024-03-25
- 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 tosuccess
so that we can removecancelled
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 thepmpro_user_taxonomy_args
filter. #2456 (@mircobabini) - ENHANCEMENT: Now sending payment descriptions to Stripe when users pay via Stripe Checkout. #2744 (@dparker1005)
- ENHANCEMENT: Added the
pmpro_get_membership_expiration_text()
function to replace the various ways we were getting the expiration text for the Members List table and when showing levels on the account page. Includes apmpro_membership_expiration_text
filter that is meant to replace thepmpro_memberslist_expires_column
andpmpro_account_membership_expiration_text
filters. The old filters are still applied if in place, but will be deprecated eventually. #2838 (@ideadude, @dparker1005) - ENHANCEMENT: Now hiding on-PMPro notices on the PMPro dashboard pages. #2797 (@ideadude)
- ENHANCEMENT: Added Screen Options for the orders and discount code list tables. #2799 (@dparker1005)
- ENHANCEMENT: Now showing links and previews when viewing file fields as read only. #2792 (@ideadude)
- ENHANCEMENT: Now passing the
$item
object to thepmpro_manage_memberslist_custom_column
so that custom code knows which specific level is being shown for the user. #2857 (@dparker1005) - ENHANCEMENT: You can now set block visibility for nested blocks. #2869 (@kimcoleman)
- ENHANCEMENT: Added
pmpro_braintree_subscription_create_array
filter. #2890 (@dparker1005) - ENHANCEMENT: Added subscription transaction ID and next payment date to members list export. #2872 (@kimcoleman)
- 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/ENHANCEMENT: Now caching the recent members and orders dashboard reports. #2850 (@dparker1005)
- BUG FIX/ENHANCEMENT: Fixed caching of sales reports that were 0 values. #2851 (@dparker1005)
- BUG FIX/ENHANCEMENT: Allowing dynamic properties in gateway and field classes to avoid PHP 8.2+ warnings. #2844 (@dparker1005)
- BUG FIX/ENHANCEMENT: No longer attempting to load our blocks if the register_block_type function is unavailable. (ClassicPress compatibility.) #2840 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Adjusted the dashboard UI to hide some elements when the current user doesn’t have the proper caps to use them. #2771 (@kimcoleman)
- BUG FIX/ENHANCEMENT: No longer making the AJAX call to check for notifications if notifications are turned off. #2856 (@mircobabini)
- BUG FIX/ENHANCEMENT: Adding nonce to email order modal and prefixing params. #2864 (@dparker1005)
- BUG FIX/ENHANCEMENT: Adding nonce to checkout form. #2893 (@dparker1005)
- BUG FIX/ENHANCEMENT: Small fixes for theme compatibility in Kadence, BuddyBoss. #2894 (@kimcoleman)
- 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)
- BUG FIX: Fixed issue where invalid dates were breaking SQL queries in the members export and sales reports. #2835 (@dparker1005)
- BUG FIX: Fixed issue where clicking outside of a modal popup was not closing the popup. #2776 (@mircobabini)
- BUG FIX: Fixed an issue where reCAPTCHA v3 wouldn’t show the badge for offsite gateways. #2826 (@andrewlimaza)
- BUG FIX: Fixed an issue where reCAPTCHA v3 wouldn’t show the badge for gateways that use a custom submit button at checkout. #2867 (@dparker1005)
- BUG FIX: Fixed edge case issues when blocks were set to hide from multiple levels. #2884 (@dparker1005)
- BUG FIX: Fixed “WordPress database error Index column size too large.” issues on some MySQL setups. #2876 (@dparker1005)
- 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()
toget_option()
. #2491, #2493, #2494, #2495 (@JarrydLong, @MaximilianoRicoTabo) - REFACTOR: The pmpro_edit_memberships capability has been replaced with the pmpro_edit_members capability. This cap is required to edit members in the dashboard or through the API.
- REFACTOR: Replaced deprecated jQuery shorthands with generic handler and trigger. #2859 (@mircobabini)
- DEPRECATED: No longer using
$pmpro_levels
global variable. #2666 (@dparker1005) - DEPRECATED: Marked the following hooks as deprecated: pmpro_admin_pagesetting_post_type_array (replaced by pmpro_admin_pagesetting_post_type), pmpro_stripe_subscription_deleted, pmpro_subscription_cancelled. #2819 (@dparker1005)
- DEPRECATED: Removed the following functions which were previously marked deprecated:
pmpro_set_pause_mode()
,pmpro_cron_trial_ending_warnings()
. #2818 (@dparker1005) - DEPRECATED: No longer showing “billing address” user meta fields in the Members List table or the Members CSV export. #2873 (@dparker1005)
- DEPRECATED: The checkout_levels API endpoint has been marked as deprecated. Please use the checkout_level (no s) endpoint instead. #2879 (@dparker1005)
2.12.10 – 2024-02-08
- BUG FIX: Fixed fatal error on post save introduced in 2.12.9.
- ENHANCEMENT: Now simplifying the members and user search on sites where wp_is_large_user_count() is true.
2.12.9 – 2024-02-07
- SECURITY: Only users with the “edit_users” capability may add the pmpro_member shortcode to posts and widgets now. #2817 (Thanks, Scott Kingsley Clark)
- BUG FIX/ENHANCEMENT: Removed the 24 option from the hours dropdown for expiration dates since the hours start with 00. #2812 (@MaximilianoRicoTabo)
2.12.8 – 2024-01-22
- SECURITY: Added missing nonce when updating the level order through drag and drop. (Thanks, Kodai Kubono from WordFence) #2773 (@dparker1005)
- BUG FIX/ENHANCEMENT: The
pmpro_stripe_order_description
filter now applies to Stripe Checkout orders as well. #2774 (@MaximilianoRicoTabo) - BUG FIX: Fixed issues with ApplePay and GooglePay when using Stripe Checkout. #2769 (@dparker1005)
- BUG FIX: Fixed issue when user fields added through code set the levels property to a single integer. This is supported again. #2775 (@MaximilianoRicoTabo)
2.12.7 – 2024-01-10
- SECURITY: Fixed a security issue where sensitive user data was sometimes showing up in web server logs. Please see https://www.paidmembershipspro.com/pmpro-security-update-2-12-7/ for more information, including notes on how to tell if your site was affected by this issue and what to do about it.
2.12.6 – 2023-12-18
- SECURITY: Fixed a security issue where unauthorized users could abuse the REST API endpoints to add new levels or edit existing levels. (Thanks, Craig Smith at WordFence) #2742 (@ideadude)
- BUG FIX: Now hiding level confirmation messages from the output returned by the checkout_levels API route. #2742 (@ideadude)
2.12.5 – 2023-12-12
- ENHANCEMENT: Now allowing links to be included in user field group descriptions. #2681 (@dparker1005)
- ENHANCEMENT: Now sorting the Levels column on the Discount Codes list table by the sorted level order. #2628 (@kimcoleman)
- ENHANCEMENT: Now recommending the new Group Members Add On instead of the Sponsored Members Add On. #2714 (@kimcoleman)
- BUG FIX/ENHANCEMENT: Improved accessibility for the frontend membership levels page default table. #2689 (@kimcoleman)
- BUG FIX: Fixed a PHP warning when selecting “other” as the site type in the setup wizard. #2708 (@MaximilianoRicoTabo)
- BUG FIX: Fixed an issue where new payment methods may not be charged after a user updates their payment method while using the Authorize.net gateway. #2330 (@dparker1005)
- BUG FIX: Removed definition of
PMPRO_BENCHMARK
constant that was defaulting that constant totrue
in certain admin CSV files. #2724 (@andrewlimaza)
2.12.4 – 2023-11-16
- SECURITY: Fixed security issue where in some cases users could upload files at checkout with disallowed file types, e.g. .php files that could then be accessed to run arbitrary code on the server. For more information, see https://www.paidmembershipspro.com/pmpro-update-2-12-4/ (Thanks, István Márton and WordFence)
- ENHANCEMENT: New icons for LifterLMS and the GA4 Add On.
- BUG FIX/ENHANCEMENT: Fixed issues with the notifications shown when updating billing details. (Thanks, dwanjuki on GitHub)
2.12.3 – 2023-10-03
- ENHANCEMENT: Updated the PayPal Express integration to save checkout data in order meta instead of sessions to improve compatibility with various Add Ons. #2616 (@dparker1005)
- BUG FIX/ENHANCEMENT: Fixed performance issue in deprecation code. #2621 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Fixed warning in PHP 8.1 when using the pmpro_member shortcode without a field attribute. #2622 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Updated pmpro_hasMembershipLevel() function to accept a string of comma separated level ids or names. This also fixes issues in The Events Calendar ticketing add ons. #2623 (@MaximilianoRicoTabo)
- BUG FIX: Fixed issue where user fields may not be shown in admin checkout emails. #2613 (@andrewlimaza, @dparker1005)
- BUG FIX: Fixed issue where the incorrect label could be shown for a user field value. #2613 (@dparker1005)
- BUG FIX: Fixed issue where the Visits, Views, and Logins report CSV export may show the user’s “joindate” in the “enddate” column. #2608 (@dparker1005)
- BUG FIX: Now only declaring the
recaptcha_get_html()
function on the PMPro checkout page. This fixes conflicts with other plugins that declare their ownrecaptcha_get_html()
function. #2607 (@dparker1005) - BUG FIX: Fixed issue where row action to view a discount code’s orders was not showing for unlimited use codes. #2599 (@kimcoleman)
- REFACTOR: Marking the PMPro Table Pages Add On as deprecated. #2606 (@dwanjuki)
= 2.12.2 – 2023-08-13
* ENHANCEMENT: Improving the LifterLMS Streamline functionality. #2572 (@ideadude)
* ENHANCEMENT: Now also applying the pmpro_checkout_message filter to the bottom message box on the checkout page. #2567 (@ipokkel)
* ENHANCEMENT: Caching the Stripe webhook status checks. #2565 (@dparker1005)
* BUG FIX: Fixed issue where some advanced settings added by Add Ons weren’t applying properly. Resave and try again. #2571 (@ideadude)
2.12.1 – 2023-08-07
- BUG FIX: Fixed issue where password reset attempts may incorrectly show that the user’s password reset key is invalid. #2561 (@dparker1005, @andrewlimaza)
2.12 – 2023-08-04
- FEATURE: Added integration with LifterLMS to streamline setting up that plugin when Paid Memberships Pro is active. #2533 (@ideadude, @MaximilianoRicoTabo)
- ENHANCEMENT: A “no access” message can now be set when restricting Elementor widgets. #2525 (@andrewlimaza)
- ENHANCEMENT: A “no access” message can now be set when restricting content with DIVI. #2526 (@andrewlimaza)
- ENHANCEMENT: Added
pmpro_stripe_checkout_session_parameters
filter. #2555 (@JarrydLong) - ENHANCEMENT: Now delaying non-security notification banners for 1 week the first time an admin user visits a PMPro dashboard page. #2552 (@MaximilianoRicoTabo)
- ENHANCEMENT: Now showing a modal with instructions for setting up webhooks after linking an account through Stripe Connect. #2554 (@MaximilianoRicoTabo)
- BUG FIX/ENHANCEMENT: Removed associative array check in the
pmpro_get_label_for_user_field_value()
function to ensure that user-friendly values are always returned. #2524 (@andrewlimaza) - BUG FIX/ENHANCEMENT: Updating the “Active Members Per Level” to ignore deleted users. #2482 (@JarrydLong)
- BUG FIX/ENHANCEMENT: Added a new capability pmpro_loginscsv for exporting the login report data and a new capability pmpro_reportscsv as a fallback for exporting all report data. #2536 (@andrewlimaza)
- BUG FIX/ENHANCEMENT: Fixed issue where subscriptions weren’t cancelling when users deleted their own account using BuddyPress or BuddyBoss. #2559 (@dparker1005, @andrewlimaza)
- BUG FIX/ENHANCEMENT: Use wpautop() for membership confirmation message. This fixes an issue where Elementor and possibly other solutions were not honoring the \n as paragraphs. #2549 (@andrewlimaza)
- BUG FIX: Fixed post restriction logic for posts that are in multiple categories. #2522 (@andrewlimaza)
- BUG FIX: Fixed an issue where extra checkout fields weren’t being displayed correctly in admin checkout emails. #2537 (@andrewlimaza, @MaximilianoRicoTabo)
- BUG FIX: Updated login functions to broken links from potentially being generated. #24722, #2244, #2475, #2476, #2477, #2478 (@JarrydLong)
- BUG FIX: Fixed styling for h2 tags on the Membership Account page. (@kimcoleman)
- BUG FIX: Fixed the ID parameter in the
pmpro_manage_discount_code_list_custom_column
filter. #2517 (@JarrydLong) - BUG FIX: Fixed issues where suggested Add Ons would not show in setup wizard if the site type was not specified. #2524 (@andrewlimaza)
- BUG FIX: Fixed the timing of the
pmpro_discount_code_used
filter when processing a Stripe Checkout payment. #2532 (@dparker1005) - BUG FIX: Fixed issue where only the first page of orders was showing up when searching orders. #2553 (@JarrydLong)
- BUG FIX: Fixed issue with some DB setups where levels couldn’t be added to the table. #2546 (@dparker1005)
- REFACTOR: Updated enum columns in database to varchar. #2529 (@andrewlimaza)