I just updated the documentation here to include my preferred way of customizing the PMPro page templates via a pmpro-customizations.php plugin.

It’s important that you don’t edit the files in /paid-memberships-pro/pages/ (or any other core PMPro file) directly as this will keep you from getting new PMPro updates, which come out every couple weeks or so and include important fixes, security updates, and new functionality.

Comments (41)

Good afternoon, and thank you for this wonderful plug-in. It solves many of our problems.

I did have question though. We have four membership levels. Levels 3 and 4 offer access to professional (C.O.R+A) and business (L.I.S.A.) contacts not offered to levels 1 and 2. In addition to the standard username, password and email address fields in the account information page, we would like to include a field that would allow members to identify themselves as CORA or LISA when signing up which would allow other members to find these professionals and business contacts when doing a search. Is this something I can do in PMPro? Thank you in advance for your time.

Hi Don,

Great question, yes you can do this with PMPro and our Register Helper Add On. This Add On will allow you to configure custom fields to your membership checkout page. Some coding knowledge is needed to get this set up correctly so if you are not comfortable with this, feel free to reach out to our Support Engineers on our Member Support Forum for help.

As a PMPro Plus member, we will set up to 5 additional fields for you at no extra charge – just reach out to our support team for more details.

Hope this helps, have a great day!

Hi Jason Coleman and the PMPro Team. Thanks for a great plugin.

How do I add billing address on just paid membership levels? I see there is a plugin which is adding billing address for all membership levels(even free), but that’s unfortunately. I’m not a developer and do not understand codes well.

Thanks in advance.

Hi @awelland,

Thank you for reaching out to us. If you are using Stripe, you can enable billing fields via your WP Dashboard > Memberships > Payment Settings > Enable Billing settings. If this does not help, or you are using a different payment gateway would you kindly get in touch with us via the Contact Form of our Contact Page (found at the bottom of this page) and we can pick this up from there?

Thank you!


How do I add a simple statement that all fields are required when signing up? I’d like this to show up for all levels and would like to keep the shortcode I have been using.

Are there particular fields you want required? You’ll need to use custom code to force those fields to be required if they aren’t already.

If you just want to mention “All fields are required.” somewhere on the page, you can edit the checkout page and put that text above or below the shortcode.


I have a question about the checkout page. I have created 3 packages with fix prices, so I don’t have monthly or yearly memberships. Also, the word Level is everywhere that doesn’t read well as I have packages. So I would like to change the wording on the checkout page:
Membership Checkout – I would like to replace Membership to the name of the package
Membership Level … change – Again, it’s not a membership so would like to change the wording, and also Level doesn’t sound great as I have packages, not Levels. So would like to change levels to packages

You have selected the XY PACKAGE membership level. – don’t membership level here, it doesn’t read well.

Enjoy your full access to our XZ Course.

The price for membership is €xxx.00 now. Is it possible to take out now. It also sounds weird.

So in general, I would like to customize the wording of this page.
Many thanks

We’ve improved our level cost text addon to change the wording on the “price for membership” text:

You can also remove the word membership or change it from other strings using the “gettext” filter in WordPress. Here is an example that would change every instance of “membership” to “package” which you may be able to use as is or tweak how you need. You can add other similar lines to translate other text. Add this all to a custom plugin (search for pmpro-customizations on this site).


The plugin has a “confirmation” page that users are directed to after checkout. You can edit the message shown here/etc. If you need to redirect to a different page, we typically recommend adding a link to the confirmation message instead of just redirecting or if you search our blog here there are solutions for redirecting to specific pages based on level/etc.

Is there a way to change the link or template that renders the restricted content page for users who are not members?

It currently goes to the WP account register page, but I’d like to allow existing registered users to go to the /membership-levels page instead of the WP registration page… Any ideas?

It should take them to the levels page unless your theme or another plugin (often BuddyPress) are overriding that redirect. One of the simplest ways to resolve is to turn off “Anyone Can Register” under Settings > General. Alternately, you can update the messages for non-members and visitors under Memberships > Advanced Settings to link directly to your Membership Levels page instead of /wp-login.php?action=register.

you barely give instructions on anything. you just nice pictures and expect the user to fill in the blanks. how do you add 4 column layout to directory

I have a be theme. all the pages ab build using page option. pmpro level restriction not working with this.
kindly guide me help me how can i solve this problem.

Second question is
how can i restrict particular page template with pmpro membership level


Hi Jason, Kimberly

I am using register helper customization plugin as suggested for adding extra fields to the checkout page. The list of fields to be added is too long.

Is there any way I can use bootstrap classes to change the layout of checkout page in 2 or 3 or 4 columns. This will shorten the length of the checkout page.

Please note that in addition to username, pwd, email, billing address, there are as many as 20 extra fields to be created on checkout page.

This is the reason why I want to make the layout in grid format of 2 or 3 or 4 columns using bootstrap framework.

Any help will be highly appreciated.

Thanks in advance 🙂

Hi I cant find simple things as CCS classes or html code that format plans selections.. It´s not a joke.
I´m triying to format .. add some texts… aligns the price circle, align to center the only one membership level that the website will sell… but I can’t to find the php codes anywhere.
I download the plugin, unzip it, and add to Adobe dreamweaver so i can have some preview and locate elements more easy… but nothing happens.

Please help Jason.
Here you can see what the plugin runs under WPLMS (chlld theme one instructor)


I want to make a new template for the output of [pmpro_account] in a plugin. Your instructions say to copy the applicable file from the /paid-memberships-pro/pages/ folder — ‘account.php’, in this case. However, that file only contains a single echo statement, which spits out the return value of a function in another file (‘shortcodes/pmpro_account.php’). I want to override the PHP and HTML contained in that function. How should I do that? Copy the code from `function pmpro_shortcode_account($atts, $content=null, $code=””)` into my template file and breaking it out of the function?


Good point. I didn’t realize this when we converted the account page into a short code. You can copy the code from shortcodes/pmpro_account.php (everything inside the function) into the template you place in your theme in place of the do_shortcode() line. This should then show your custom template on the selected membership account page, but not wherever you use the pmpro_account shortcode in other places.

If you’re still working through this, please post to the forums and we’ll work out a solution. Thanks.

I think this should be easy, but I’m not finding an answer anywhere…all I want is to generate a link that I can attach to a button graphic to send buyers directly to my payment gateway. I’m using OptimizePress and Leadpages to create the pages and the PMPro shortcodes don’t work in those situations.

How is this done? Thanks for any help you can provide!

Hello Jason, I followed the steps to create a new invoices page using “Copy the page templates into your active theme”. Is that enough ? because I modified the invoice.php file in the themes/{active theme}/paid-memberships-pro/pages and nothing changes.
Am I missing another step ?

Hmm. That should work. I just tested that this works for the invoice.php template on my dev setup.

Doublecheck spellings. Note that the invoice.php template is only used when viewing a single invoice, not in the email confirmation or where the invoice is shown on the confirmation page.

You can try to specifically set the template file using the custom code (with alterations) at the bottom of the docs page:

If you are still having trouble, you can post in our member forums and we’ll help you out.

Hello Jason,
I found the issue – simple typo in the directory name ! This is working now.

Hi Jason,
Please, what is the easiest way to customize pages? Creating the pages from WordPress or still letting PMPro creating the pages and then going through one of the processes described in the documentation you provided?
Also, does this documentation allows to redirect to a different page than confirmation page after checkout it’s possible to ?

RE your first question, it depends on how different you want the page to be. If you are just changing a few things, create a PMPro page template and just change what you want. If it is completely different, you should just create your own page with a custom WP page template and use that.

RE the second question: You can use the pmpro_confirmation_url filter to change where PMPro redirects after checkout. https://www.paidmembershipspro.com/hook/pmpro_confirmation_url/

Leave a Reply

For faster support related to issues on your specific site please open a ticket in our members support area.

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