Some memberships only make sense to offer for a set window: enrollment for one class session, an early-bird cohort, a founding-member group that closes once it fills. Once that window passes, you want checkout closed and the level out of sight, without disrupting members who already joined.
This recipe uses the pmpro_registration_checks filter to block new signups for a membership level after a cutoff date you choose. Once that date passes, PMPro also stops listing the level on the Membership Levels page, so new visitors will not find an offer that has already closed. Existing members keep their access for the rest of their term.
Do You Need This Recipe?
This recipe fits if:
- You are running a class, cohort, or event with a fixed enrollment window and need checkout to close automatically once the date passes.
- You want a limited-time level to stop appearing on the Membership Levels page once enrollment ends, without deleting the level or removing existing members.
- You are comfortable editing two values in a PHP snippet: a level ID and a cutoff date.
This recipe does not cancel or downgrade current members of the level. It only blocks new signups after the cutoff date.
Best Practices and Considerations
- This recipe checks the current date against your cutoff date on every checkout attempt. Once the cutoff passes, it also disables new signups for the level going forward, and that change persists until you reverse it.
- To reopen registration later, remove the snippet from your site and uncheck Disable New Signups on the level’s edit page under Memberships > Settings > Levels.
- If you want visitors to see a countdown or limited-availability notice before they reach checkout, pair this recipe with a banner plugin such as Sitewide Sales.
About the Code Recipe
This recipe hooks into two places in PMPro:
pmpro_registration_checks: runs during checkout and returnstrueorfalseto allow or block registration. This recipe returnsfalse, with a message explaining why, once the cutoff date has passed for the level you specify.pmpro_levels_array: runs whenever PMPro builds the list of levels shown on the Membership Levels page. Once the cutoff date passes, this recipe uses it to turn offallow_signupsfor the level, which removes it from that list.

Understanding the pmpro_registration_checks Filter
The pmpro_registration_checks filter lets you customize PMPro’s registration validation. Functions hooked to it return true to allow registration to proceed, or false to block it, typically along with a $pmpro_msg explaining the reason to the member.
The Code Recipe
Adding the Recipe to Your Website
You can add this recipe to your site by creating a custom plugin or using the Code Snippets plugin available for free in the WordPress repository. Read this companion article for step-by-step directions on either method.
How to Customize This Code Recipe
- (Line 18) Update
$pmproml_limited_level_idto the ID of the level you want to close. Find a level’s ID on Memberships > Settings > Levels. - (Line 19) Update
$pmproml_end_dateto the date registration should stop, inYYYY/MM/DDformat.
Video: Coding with Sam Walkthrough
Get Support From Our Team of Experts
Have a question about how to use this feature? Our Support Page outlines three ways to get support.
Our Max plans include hands-on help customizing your membership site and implementing new features. Upgrade to PMPro Max now »


