Many of our articles and code recipes include instructions on how to “customize and add this code to a plugin for customizations”. In addition, our support team may provide you with customizations to add to your site via this method.

This tutorial explains how to create and edit a custom plugin for all of your tweaks to the core plugin and for any Add Ons you are using.


But can’t I just edit my theme?

We strongly recommend using the customization plugin method for a variety of reasons. To be clear, the file functions.php within any theme or child theme performs like a plugin in that it can execute php code. While adding code to your active theme’s functions.php file is often quicker than building a plugin, the downside is that if you change or update your theme, you’ll lose the functionality that was built into that theme. Code in a plugin will persist.

In addition, the use of a customizations plugin helps your developers and our support team know exactly WHERE the custom code is located as it relates to your Paid Memberships Pro setup.


First, figure out how to FTP into your Website

While many of our add ons can be installed directly via your WordPress Dashboard, the customizations plugin is one instance where knowing how to use FTP to “put” or “edit” files on your web server is very important.

Your web host should have provided you with FTP or SFTP credentials. To properly log in to your web server you will need the:

  • FTP (or SFTP) address
  • Username
  • Password
  • (possibly) a port number and root directory

If you don’t know how to use FTP, this guide on the WordPress Codex provides some background on FTP and options for FTP clients, you can also refer to your web host’s FAQs and guides.


Creating Your Customizations Plugin


  1. Download the blank customizations plugin (.zip)
  2. Upload the .zip file via the Plugins > Add New > Upload page in your WordPress admin.
  3. Activate the plugin.

  1. Create a folder called pmpro-customizations in the wp-content/plugins folder of your site.
  2. Create a file called pmpro-customizations.php in the folder you just created.
  3. Edit the pmpro-customizations.php file and paste this block of code into the file:
  4. Save the file.
  5. Upload the plugin via FTP to your website.
  6. Activate the plugin via the Plugins page of your WordPress Admin.


Editing Your Customizations Plugin

  1. Connect to your web server via FTP.
  2. Navigate to the /wp-content/plugins/pmpro-customizations/ folder.
  3. Download the latest copy of the pmpro-customizations.php file.
  4. Open the file in your preferred editor.
  5. Add the code for the recipe or code shared via your support forum thread at the bottom of pmpro-customizations.php.
  6. Save the File and upload the folder and file to your website via FTP.

This Makes Me Nervous.

We understand that you may not be completely comfortable working “in the code”. Our support team can put minor code tweaks in place for you if you share FTP information in a private thread.

If you are updating the customizations on your own and an update to the customizations plugin completely breaks your site, don’t fret.

These steps should repair your site:

  1. Connect to your website via FTP and navigate to the wp-content/plugins folder.
  2. Rename the folder pmpro-customizations to anything else (I generally rename it to pmpro-customizations-off.
  3. Now, visit your site. WordPress will automatically deactivate the plugin and, in doing do, your site should be restored.
  4. You can then repair any broken code in the file and rename the folder to the original pmpro-customizations.
  5. Upload the updated file and reactivate the plugin via the ‘Plugins’ dashboard page.

Need to customize the appearance (CSS/stylesheet) of Paid Memberships Pro?

We have a separate guide that covers setting up CSS stylesheet for customizations to your Paid Memberships Pro-powered membership site.

View the PMPro Customizations Stylesheet Tutorial
 


this looks very doable. 3 questions.
1. do custom plug ins slow down the speed of my site?
2. do I need to do anything to the custom plugin when a new version of the PaidMembership pro updates?
3. I want to use this new plugin you got but don’t want to require Last Name. Should I create a custom plug in and edit the code from https://github.com/strangerstudios/pmpro-add-name-to-checkout OR just download this one and edit the code in there directly to NOT require last name?

thank you! love this help forum so far. great job!

Lei

All customizations can go into the same pmpro-customizations file core plugin file (pmpro-customizations.php). We have some add ons that function as separate plugins but for code recipes and defining certain global variables in conjunction with add on plugins, you just need a single pmpro-customizations plugin.

In that case, how would you tell the plugin to apply itself (for instance, if I add “company” field to checkout for businesses, but not individuals) only to one membership level, not all?

You can set a “level” property on Register Helper fields so they are only applied to specific levels. So e.g.

`
$fields[] = new PMProRH_Field(
“company”, // input name, will also be used as meta key
“text”, // type of field
array(
“size”=>40, // input size
“class”=>”company”, // custom class
“profile”=>true, // show in user profile
“required”=>true, // make this field required
“levels”=>array(1,2,3) //only add this field to levels 1,2, and 3
));
`

Hi, Jason, I was sure there had to be a way! Here’s how I incorporated it, but there is no effect on the fields. Thoughts on where I went wrong?

//define the fields
$fields = array();
$fields[] = new PMProRH_Field(“Organization Name”, “text”, array(“size”=>40, “class”=>”Organization Name”, “profile”=>true, “required”=>true, “level”=>array(2)));
$fields[] = new PMProRH_Field(“Organization Email”, “text”, array(“size”=>40, “class”=>”Organization Email”, “profile”=>true, “required”=>false, “level”=>array(2)));
$fields[] = new PMProRH_Field(“Contact Name”, “text”, array(“size”=>40, “class”=>”Contact Name”, “profile”=>true, “required”=>true));
$fields[] = new PMProRH_Field(“Contact Email”, “text”, array(“size”=>40, “class”=>”Contact Email”, “profile”=>true, “required”=>true));

Is there a way of making separate Customization Plugins (so I can de/activate parts of the customization in just one click) and still have it show up in the PMPro Addons List (not just the WordPress Plugin overview)?

I installed PM Pro, the helper plugin and created the pmpro-customizations.php as instructed. The custom fields show up fine on checkout and profile BUT it doesn’t save to database. Did I miss a step? Thanks.

Hi,

I followed the instruction, used this code (https://gist.github.com/strangerstudios/6003272) for the plugin and uploaded it. But for some reason it doesn´t show up in the plugin sections. I checked three times now, if I did anything wrong, but it´s basically just copy and paste. Do you now any common mistake that I could have made? It´s named correctly and in the right place – I really have no clue, why it doesn´t show up!?

You need to put the “header” information from the pmpro-customizations template above the code from that gist. So paste them together with the pmpro-customizations on top and make sure it’s in the /wp-content/plugins/ folder. If you need more help, post to our member forums and we’ll help you out.

Hi Jason,

Thank you for your reply. After checking everything a few more times and not finding any mistake, I just created folder and file again from scratch and for some reason now it works!?!?
I also sent an e-mail to your support over your contact form. Since the problem is already solved, please just ignore it.

Thank you!

Hi, I am currently using the PMPro Customization and I am very happy with this plugin. The only item I am figuring out at the moment is how to inject javascript into the pmpro customization, because I am looking at having a datepicker for my date fields.

Hi Jason. Is there any reason why using Code Snippets plugin (https://wordpress.org/plugins/code-snippets/) and adding each recipe as a snippet wouldn’t work? I have used it successfully to add functions before (it’s good because you can switch themes without worrying about your functions.php). It’s also handy because you can activate/deactivate functions (snippets) independently to aid troubleshooting.

That looks really cool and I think that would be a good way to manage the code snippets we share on the site here. It is similar to what we suggest with the pmpro-customizations.php plugin, but you can add the code via the WP GUI instead of having to edit the plugin file directly.

Hi Trishacupra, I have created snippets in almost all of my codes to customize wordpress and to do things that existing plugins don’t have. so far, I don’t have any issue and quite satisfied with it. With code snippets, you can do almost everything you want. 🙂

I am launching a site for a 501(c)(3) non-profit. One of the constraints the Board has stipulated is that there can be no mention of the word “membership” in the membership section (I know – ironic right?). Instead everything has to be “patron” & donation. I have been able to accomodate so far by revising all front-facing instances of the word “membership” to “patron”, etc, EXCEPT for the Membership Levels page (for me – the Patron Levels page) which is generated when a prospective patron selects a patron level package (i.e. a Membership Level). I think I tracked it down to the PMPro functions.php file and the pmpro_getLevelCost() function called there. I tried creating a custom plugin – which initiated just fine – and pasted a modified copy of the pmpro_getLevelCost() function into it. Of course, it throws and error because I am asking the function to fire off twice. I have a couple ideas on how to proceed, but thought I would put it out there to you folks to see what you think – perhaps you can suggest something.

The non-profit folks would also like me to modifiy the URL / permalinks to remove all instances of the word “membership” as well. This is a lower priority for me.

Any contribution will be very much appreciated.

Bill

I’m trying to create a custom payment gateway but I need to add another currency too. I which to do this without having to edit PMPro core files. Any hints on how to go about this?

Hi Jason,

Really this plugin awesome :). I found this plugin from wordpress.org then I downloaded it. Its working perfectly. But I’m facing a problem. one more I install this pmpro-register-helper for register. User can register without choose plan or level. Actually I want that for now. But I don’t understand how can i do this. can anyone help me?

Regards

Hi, I created this plugin and added the pmprorh_add_checkout_box() lines I previously had in my theme’s functions.php. But now it dies with a “PHP Fatal error: Call to undefined function pmprorh_add_checkout_box()”
how can I make sure this plugin loads after the Register Helper plugin?

Never mind – I renamed the folder and php file to “pmpro-zzcustomizations” and it seems to load after the other pmpro plugins now!

I really need help, please.
I tried to make some customizations to PMpro.
Now I need to find out how can I change the word “Days” in “Membership expires in 14 Days (Sign up page).”
I have uploaded the .mo-file in danish, but the word “Days” remains in english instead of the danish word “dage”.
I have seached for hours, but don’t know where to look.

Did you write a custom Danish translation? If so, can you email your file to info@paidmembershipspro.com.

Your can reply here with the correct translation for that phrase “Membership expires in 14 days” and we will troubleshoot.

Are you using any other plugins to customize the level cost text? Is this the level’s expiration or an expiration date trigged by a discount code?

I uploaded the code as specified in this post and when I go to my plugins there is no pmpro-customizations plugin. How long does it take to transfer the files. My FileZilla is showing that it all transferred just just fine in 1 second.

Is pmpro-customizations.php in the /wp-content/plugins/pmpro-customizations/ folder or /wp-content/plugins/? If it is, it should show up in your plugins list. If it doesn’t show up there, then either (a) your plugin header (the comment at the top of the file) is incorrect somehow or (b) you FTP’d the files to another site/host. Sometimes it can be confusing to figure out exactly which folder is running your site if you have several sites setup under the same account/etc.

We can help in the member forums if you can’t figure it out on your own.

Here is the folder order:
thepotterscast/wp-content/plugins/pmpro-customizations
The file is pmpro-cutomizations.php with this code:
/*
Tell PMPro to filter the_content a bit later.

This will sometimes fix issues where theme or plugin elements (e.g. videos)
are not being filtered by PMPro. Note that this sometimes will cause
some things (e.g. share links) to be filtered that you don’t want to be
filtered… and sometimes edits to the theme or a child theme are
required to get the desired effect.

Add this to your active theme’s fucntions.php or a custom plugin.
*/
function my_init_change_pmpro_content_filter_priority()
{
remove_filter(‘the_content’, ‘pmpro_membership_content_filter’, 5);
add_filter(‘the_content’, ‘pmpro_membership_content_filter’, 15);
}
add_action(‘init’, ‘my_init_change_pmpro_content_filter_priority’);

Each time I copy and paste what I am told to copy and paste. I think it is correct.

I need to add a “Join a Team” field or “Create a Team” field and plugin. Would anyone be interested in undertaking this work as paid work?

As Aimee mentioned above….. Your example for using “level”=>array(1,2,3) does not work. All of the fields show up on all of the member levels 1-5 anyways.

$fields[] = new PMProRH_Field(
“FirmName”, // input name, will also be used as meta key
“text”, // type of field
array(
“size”=>40, // input size
“class”=>”firm”, // custom class
“label”=>”Firm Name”,
“profile”=>true, // show in user profile
“required”=>true, // make this field required
“level”=>array(1,2,3)
));

This doesn’t seem to work when using Desktop Server from ServerPress? I’ve created a folder and file as suggested, but the plugin doesn’t appear in the list. I’ve followed the same instructions on a live website and the plugin appears. I’d like to test the plugin in a local development environment, but it doesn’t seem to like it. Or is it because my license only applies to the live site and not the development one?

I have added PMPro Customizations, but I don’t know how to make it work. I created it and then I activated it, is there something else I need to do to make it work?

Completed the six steps above. created folder, file, add code etc …

Code:
‘membership_expiring_30’,
60 => ‘membership_expiring_60’,
90 => ‘membership_expiring_90’, );

return $settings;
}

add_filter(‘pmproeewe_email_frequency_and_templates’, ‘eew2_alert_settings’, 10, 1);

trying to test different expiration periods with different templates. The code was supplied by Pmppro rep.

received: PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘eew2_alert_settings’ not found or invalid function name in /home/nycmidwi/public_html/wp-includes/plugin.php

I just tried this and can’t seem to figure out one issue:

Goal: Configure membership level to allow teachers to purchase blogs on signup using pmpro and the Network Site Helper plugins.

[snipped]

So I am still a bit new to this system and need a little help with adding some fields. For example I want to add a “file” field. I have created the customization plugin and saved it as mentioned. what I am not sure is what code and where to include that (meaning what file) it goes in. Any help would be appreciated 🙂

We can help you in the member forums. If you share the fields you need and your current customizations (through a site like gist.github.com) we can make sure things are formatted well and get info from you to install the code “manually” for you.

If it helps, the answer to “what file”? Is to create a NEW file called pmpro-customizations.php. Place it in a folder called pmpro-customizations, then upload that folder to your site (via FTP) to wp-content/plugins/pmpro-customizations

For my New Logo design website PMP (Free) Works just fine for my membership process…However, I cannot add a few questions (Design Questionnaire) to ask those Signing Up For Membership “BEFORE” they get to the Billing/checkout page. I NEED THIS TO MAKE MY SITE COMPLETE…But cannot figure out “HOW” to do this.

I’d like to have the ability to “ADD” custom Info Fields to the Membership sign-up Process after someone selects a Type of Logo on my website prom a Pricing Table that’s linked to PMP (Free Version) Checkout memberships Level Page!!

However, I’ve added the “Paid Memberships Pro – Register Helper Add On”…but to no avail, I have NO IDEA where or how to use it…Or Edit it to add the fields I need To Ask a few Design based Questions to my Customers Signing up for Checkout with paypal or a credit/debit card. I’ve even created a Registration questionnaire in Contact Forms 7 (It Doesn’t Work Either Like It Should With PMP)…and I cannot figure out HOW to link it…Or Edit the membership sign up form in PMP!!! ; (

So my question is: Is there a Simple way to add the question Fields I need Customers To See to SUBMIT INFO before actually checking out? If So, Where Do I add them…Or How. Thanks Any help in the right Direction Would Help. I’m A DIY Type of guy….But a push in the right direction would be a blessing. Any Ideas? Thanks

Blessings-Don : )

Just replied to your message via our contact form. The Register Helper documentation can be read here: https://www.paidmembershipspro.com/add-ons/pmpro-register-helper-add-checkout-and-profile-fields/

We do not have a link between Contact Form 7 and storing the user’s entered data in their fields then referencing it in their membership account.

If you need help configuring Register Helper, we provide the code for up to 5 fields as part of PMPro Core or Plus membership. See https://paidmembershipspro.com/pricing/

Hi and thanks for all the inf here, its really helpful since i am kind of new to all of this. Is there anyway someone can provide the correct loing/out recipe for the plugin

thankyou in advance

I love this plugin, and I have added a whole set of extra information to my registration form. However for some reason one field – title – is not being saved to the user record. Everything else works. The first two fields are shown below. Title does not work,Referral and first name do. They all look identical to me!

$fields = array();
$fields[] = new PMProRH_Field(
‘referral’, // input name, will also be used as meta key
‘text’, // type of field
array(
‘label’ => ‘Referral Code’, // custom field label
‘profile’ => ‘only_admin’ // only show in profile for admins
)

);

$fields[] = new PMProRH_Field(
‘title’, // input name, will also be used as meta key
‘text’, // type of field
array(
‘label’ => ‘Title’ , // custom field label
‘size’ => 10, // input size
‘class’ => ‘signup’, // custom class
‘profile’ => true, // show in user profile

)
);
$fields[] = new PMProRH_Field(
‘firstname’, // input name, will also be used as meta key
‘text’, // type of field
array(
‘label’ => ‘First Name’ , // custom field label
‘size’ => 40, // input size
‘class’ => ‘signup’, // custom class
‘profile’ => true, // show in user profile
‘required’ => true, // make this field required

)
);

Editing the Title field from within the membership page does not work either, it does not save the change. Editing the User record does not save the change either.

all advice appreciated!

Try changing your the name of your field from “title” to “user_title”. The variable name title might cause issues since WP uses it for some other things. We try to avoid this kind of error, but might be missing something here.

Hi,

I already create my plugin and I changed the levels.php file in order to have “Tipo de suscripción” instead of “Level” and “Precio” instead of “Price” and it works pretty well. Now I would like to modify or delete other sentences in English that appear in some pages on my website, but I don’t find them in any php file belonging the “pages” folder.

For example: I would like to delete the word “now” of the sentence “The price for membership is %s now” whic appers in the “checkout membership” page, but I can’t find this sentence in any php file inside the “page” folder.

I found the paid-memberships-pro-es_ES.po file in the “languages” folder which contains some of the sentences that I would like to modify (including the sentence that I used in the example above), but when I modify this file to use it in the plugin (even if I modify it in its original folder) no modification take place in my web site.

Could you please explain me how to do this modifications.

Thank you very much.

Hey guys,

I just got the my_pmpro_confirmation_redirect.php code from github and had some questions about it.

For starters I know nothing about coding, it honestly all looks like a bunch of jibberish to me but I need this functionality. So in an effort to keep it simple I got the code snippets plugin.

Thing is:

1. What part of the code do I actually use to create the snippet? Can you show me from where to where I should copy and paste into the “code” section of code snippets…

(snipped)

2. What parts of the code need to be changed? Is it just the numbers in the “$confirmation_pages = array(1 => 2);” section, or are there other changes that need to be made to the code so it will work how I need it to? Also does the “//change this use your membership level ids and page ids” stay or do I delete this?

3. I am creating numerous levels and want them to go to different confirmations, do I have to create a different snippet for every level that I want to direct to a page that is different from the default confirmation page?

Thanks in advance!

Hi there. Coding is tough. Even copying and pasting can go wrong if you accidentally include something you don’t need. So your question is valid.

I snipped the code out of your reply because it would mess with our formatting on the side. However, the answer is basically everything you pasted there should be pasted into the snippets plugin. Additionally, I don’t know how the specific snippets plugin works, but you might need to add the opening php tag (first line of the code on this page here http://php.net/manual/en/language.basic-syntax.phptags.php) on it’s own line at the top to designate the file as containing PHP code. That’s it.

If you have access to FTP and can do that, this is safer to do over FTP. You might be able to find a WordCamp or WordPress meetup near you to find a developer to help you really quick with this… or even someone on Fivr.com or craigslist to just do this bit of code for you for $5-$10. If you are a member here, we will help you with this in our support forums if you provide the info to access your site in a private reply.

Regards.

Hey Jason thanks for your reply!

One last thing though, could you just quickly address the 2nd and 3rd parts of the question…

What Im trying to do is create an upsell sequence, so once somebody buys a specific membership level, they are taken to a page that offers them an upgraded level -before- they are then taken to the confirmation page.

Thing is I have a few levels that I want this to happen for (pretty much all of them except the upgraded one they are being offered in the upsell), so…

What parts of the code need to be changed in order for me to get this functionality? Is it just the numbers in the “$confirmation_pages = array(1 => 2);” section, or are there other changes that need to be made to the code so it will work how I need it to? And do I have to create a different snippet for every level that I want to direct to a page that is different from the default confirmation page?

Leave a Reply

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