Restrict the display of Advanced Custom Fields (ACF) fields by Membership Level

Advanced Custom Fields PluginAdvanced Custom Fields is a popular plugin available in the WordPress.org Plugin Repository. The plugin allows you to add structured information to your posts, pages, and more.

This guide explains three primary methods to hide or show fields based on the membership requirements for the post.


Option 1: The pmpro_hasMembershipLevel() function.

Since the ACF plugin requires you to add custom PHP functions to your theme’s template files, one of the easiest ways to restrict the display of fields is to wrap your entire display in the pmpro_hasMembershipLevel() function. Here’s an example of using the function in your template files:

You can read full documentation on the pmpro_hasMembershipLevel() function here.


Option 2: The pmpro_has_membership_access() function.

Similar to the option above, this method will look to the post’s required membership levels. You won’t need to specify the level IDs when using this function, it will inherit the membership protection from the “Require Membership” metabox for that post. Here’s an example of using the function in your template files:


Option 3: The acf/format_value Filter

If you’re using version 5+ of the Advanced Custom Fields plugin, you can write a single function that will filter all fields on a member-protected page. This code will uses the acf/format_value filter to check first if the user has access to the post and will then optionally restrict the display of the field.

Note that this will not restrict the display of any custom HTML you have in your page templates, but it is a simple solution that won’t require editing all of your theme files.


If you need help altering these recipes to suit your needs, feel free to get in touch with one of our Support Engineers on our Member Support Forum.

Add a Membership Duration dropdown to Checkout and Offer a Discount for Extending Membership

Give your customers the option to select a membership duration and offer a discount for a longer term. This is a great way to collect a larger up-front payment from members and offer an incentive to pay for membership in advance.

Screenshot of the Membership Checkout page with code recipe


About the Recipe

This code will add a “Membership Duration” dropdown field to your checkout page. Once selected, the member’s expiration date and initial payment amount will be updated accordingly.

In the code recipe, there is a 20% discount when selecting a 2-year membership duration and a 25% discount for selecting a 3-year membership duration. The code recipe serves as an example for what is possible, you can alter the recipe to remove the discount or adjust the discount to suit your business.

You will need to input the Level ID that you want this code recipe to apply to. Only select membership levels that are billed on a yearly basis otherwise this will conflict with other level billing periods. Add your Membership Level ID to 'levels' => array( 8 )

This code recipe requires the Register Helper Add On to be installed and activated. If you need help altering this code to suit your needs, feel free to get in touch with one of our Support Engineers on our Member Support Forum.


The Code Recipe

This code recipe requires a Plus Account or higher.

View Membership Options

PMPro Update 1.9.5.1

Version 1.9.5.1 of Paid Memberships Pro is out with a handful of bug fixes. These bugs have the potential to hinder sales (especially for customers using PayPal Standard and PayPal Express), so be sure to upgrade.


Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 1.9.5.1 specifically here.


The full list of updates is below.

  • BUG FIX: Fixed issue with the PayPal IPN Handler where existing users checking out for a new level would sometimes have their membership and new subscription cancelled.
  • BUG FIX: Fixed PayPal IPN Handler to set the status of old levels to ‘changed’ (instead of ‘inactive’) when processing checkouts. This will improve the accuracy of reports.
  • BUG FIX/ENHANCEMENT: Now checking for the recurring_payment_skipped transaction type in the PayPal IPN handler. When a payment is skipped and this message is sent, we will now fire off the failed payment email to the customer and admin. (Thanks, mjulian87 on GitHub)
  • ENHANCEMENT: Removed validation info from the IPN log.
  • ENHANCEMENT: Updated German (de_DE) language files.

How to make video tutorials for your membership site.

Instructional video can be a key component of any membership website, so I thought this would be a great opportunity to share my experience creating setup tutorials and video content about our Add Ons. I hope you can use the step-by-step guide below to make more powerful videos for your membership site.


Video Communicates Your Message Quickly and Effectively

Video is one of the most powerful forms of media used in today’s time to tell stories or get your message ‘out there’. After Google, people turn to YouTube to find answers to their search queries. Video is here to stay and some say that it will only get more and more important as we head off into the future of this ever-increasing ‘digital age’.  In this article, I will attempt to cover my entire video making process. You may find when making your own videos that your process differs slightly. This is totally fine and you should embrace the process that works best for you.
Travis Lima working on a video editing.

Watch an Example of our Screencast Video Tutorials


Quick-Start Video Making Points

Below are some quick points, aimed at those who just need some tips to get going on their video making. Below these quick points, you will find a more detailed blog elaborating each point.

The (Simplified) Process:

  1. Idea/Conceptualize – Write down an idea for a video, make a list of some of the main points of the video that you want to communicate to your audience.
  2. Research – Once you have a general idea for your video, you want to go and research your topic. While researching, be sure to jot down notes that are important to highlight in the video
  3. Dry Run – Similar to the research phase, try to do a dummy or test run of your video from start to finish. Take notes of anything you may want to include in the video.
  4. Script (1st draft) – Take your idea and start writing a script. Draw a line down the middle of the page. On the one side write down what you expect to see on the video, and on the other side write the actual words that will be said while that portion of the video is playing.
  5. Record video – This can depend largely on the type of video you are creating. In the case of a tutorial screencast style video, you want to record your screen using a program like  OBS Studio, ScreenFlow, or Camtasia. For a review of 2018’s best Free Screen recording software click here.
  6. Edit Video – Using a video editing software (I use Adobe Premiere) add your video and start trimming all the unnecessary pieces of the clip, or mistakes. Try to keep videos as short and concise as possible.
  7. Script (Final Draft) – Now that you have the video portion done, read your script and watch it alongside your video. Make any relevant changes to your script. Like your edited video, keep your script short and to the point.
  8. Record Audio – Find the quietest room in your office or home, grab your script, and start reading out your script as clearly as possible. Don’t be afraid to take more than one take on this. If you are confident enough, avoid this step and record the audio while recording the video by talking your way through the video recording session. Avoid using filler words like “um” or “like” while recording.
  9. Edit Audio – Add your audio file to your video editing program. Trim off all the mistakes, pauses and unnecessary audio clips and align the audio with the video, making sure the audio and video match together.
  10. Add Extras – If you have any graphics, animations intros, background music – add this in now.
  11. Export Video – Export your video with the relevant settings. Here is a video that I used to see which are best for my videos.

Software Recommendations


Hardware Recommendations


Before getting started – The most important factor of all!

Photo by Jeff Hopper on Unsplash

Photo by Jeff Hopper on Unsplash

Before diving deep into how to make videos for your Membership Sites, I want to make one thing clear: The most important factor to making videos (or anything that we want to make but have little knowledge about) is to just get started.

Anything worth doing is not easy and it is often the case that we see a metaphorical mountain in front of us when trying something new. In the case of making videos, it is easy for one to get caught up on little things that just stall us from actually sitting down to make a video. Don’t get stuck thinking that you can’t make videos because:

  • “I don’t have the proper gear.”
  • “I can’t make videos, I did not go to film school.”
  • “I don’t know how.”

Just get started. One step at a time. Use the power of Google and YouTube to hack your way to your first video. If it is anything like mine, it will probably be average – at best. But hey! Now that you have something out there, you can improve on it. Learn from it. Doing something (even if it is average) is better than doing nothing at all. So grab your smartphone and “Just get started“.


Now let’s get started making our video.


Step 1 – Idea and Conceptualization

This step is the very first step of the video making process but it is an important one. If you already have an idea or goal for a video, great! If not, don’t worry. This step is designed to help you find or craft an idea that you can use in the making of your next video.

For me, it is relatively simple in that I have a set of Add Ons or documentation pages that I need to make videos for. Once done with the one, I move on to the next. This step can be as elaborate or minimal as you need it to be. I would encourage you to be bold and really hack your idea out in this step, but don’t get stuck here. If you feel like there is not more to do here then needed, time to move on. We still have got a lot of work to do.

General video getting started photo of notepad and phone.

If you have an idea of what video you want to make:

  1. Write your idea down on a piece of paper or use something like Google Docs or Dropbox Paper 
  2. Explore your idea by brain dumping and sketching out a storyboard.
  3. Write out a very quick overview of your idea. Include all the key bits of information that you want to bring across in your video.

This step will help you to avoid forgetting or leaving out anything crucial that you want to appear in your video. It may be hard to believe, but it is really common to come to the end of your video making process and realize you forgot to include a crucial scene of your video.

If you don’t already have an idea for your video, try doing one of the following:

  1. Brain Dump all of the possibilities you can think of. Be sure to write any and all ideas; the right one will stick.
  2. Use Google, YouTube, and other social media platforms for ideas and inspiration.
  3. Check your competitors’ websites to see what they are doing for their audience. Use this for inspiration and not to ‘steal’ ideas.

Step 2 – Research

Once you have your idea and the general concept of your video written down, it is a good idea to research the topic of your video. Research can open up more ideas and information that you can use in your video. For example, when I am making an Add On video, I will go and read the documentation over to make sure I don’t leave out any vital details about the Add On. After that, I will search through our blogs and forum topics to see if I can find any useful information that can provide something extra to those who watch the video.

Use the internet to research your topic. Search forums, documentation, and videos to get as much information as you need to make a quality video. You may find new sources of useful information, analogies and other relevant information that you can include in your video. This is also a great way to open your mind on how to communicate your topic in a different and potentially better way to what you initially thought.

Photo by Kaitlyn Baker on Unsplash
Photo by Kaitlyn Baker on Unsplash


Step 3 – Dry/Test Run

At this stage, you should have a solid foundation of research and conceptualization of your video. Now it is time to do a dry run. In my opinion, this step still falls under the ‘preparation phase’ of the video making process. The idea here is to play out the exact video in a very rough, unrehearsed way. This is because sometimes the idea on paper doesn’t translate well practically. By trying your idea out first, you may realize missing information or a better way to communicate a particular message to your audience.

When making an Add-On Video, I will start up my local development environment (I use Local by Flywheel – recommended), log in to my Paid Memberships Pro test site, and literally go from the start to the end of installing and configuring the Add-On. I will generally make notes along the way, test all the features of the Add-On, refer back to the frontend to see what effect any particular setting it had on my site, and make sure I didn’t miss anything. Depending on the complexity of the Add On, I may do multiple dry runs so that I can get confident of what I need to do and where I need to navigate while recording my screen for the actual video.

Pro Tip – Video record your dry run to have an idea of what the video and process look like. This can help prevent re-shoots later on.

Step 4 – Writing a Script

In this step, I take all the notes that I made in the first three steps and start writing up the first draft of my script for the video. There is a general format to follow when writing a script and that usually comprises of simply dividing your page into two parts. On the left side of your page, you write down roughly what will be happening on the screen and on the right-hand side, the text/audio that will be displayed at the same time the scene you described on the left side of the page is displaying. When writing your script keep in mind the dry run(s) you did; try to play it out in your head and put the scenes together verbally on the script.


Step 5 – Record Video

After having a decent script together it is time to go ahead and start recording your video. To record my onscreen videos I use the built-in software of my MacBook Pro – Quicktime Player but I have heard good things about Screenflow and I have previously used OBS(Free) with good results.

Take your script and, keeping your dry runs in mind, start recording your screen with your screen recording software. Don’t panic. If you make a mistake or do something incorrectly, you can just re-do that specific action or section (not the entire video) and edit out the mistakes. When recording your screen now, you will basically do the same sequence as your dry runs but this time you will try to do it as smoothly as possible.

Mac QuickTime Player Screen Recording

VIDEO RECORDING TIPS:

  • Make sure your mouse cursor is always easily visible.
  • Set the ‘click indicator’ to ‘on’ of your video recording software.
  • Do not hastily go through the process of your video. Move at around 70% of your normal speed (you can always speed the video up later).
  • If you make a mistake, no need to re-record the shot. Move a step back and do the sequence again. Edit out the mistake later.
  • Turn all devices into Airplane mode, and silence all distractions and notifications that can pop up during filming.

Step 6 – Edit Video

This may seem a little counterintuitive to jump right into editing the video after recording the video, but hear me out. In this step, you have the chance to put the content section of your video together, edit out all of the mistakes, speed up or slow down sections that are moving too quickly or too slowly, and get the video to a point where you are satisfied with.

The reason I do this is that I find it easier to finalize the script. This gives you a pretty good idea of your audio to video ratio. This is important because (extreme example coming up) let’s say you have an edited video that has a total length of 30 seconds but your script has over 5000 words in it. Chances are you are going to need to record a ‘little’ more video to cover everything you want to say. By having an almost complete video that is edited, I can record some B-roll footage in an event of me having too much to say and too little to show, or I can cut down on my very lengthy script and focus on keeping the script concise (this is almost always a good thing to do).

Travis Lima working on a video editing.

Pro Tip – Keep your video, script, audio short and to the point, especially if you are making a tutorial. Your viewers may not feel so enthusiastic about having to sit down and watch a 30-minute tutorial video. Of course, the length of the video you are making can vary greatly depending on the type of video you are making.

Speed up sections where you can, keep an eye on sections that involve filling out forms or boring tasks. No one likes to sit watching a video of a slow page loading or someone filling out a lengthy web form. Focus on short, punchy videos.


Step 7 – Finalize Script

Now I sit in front of my edited video and I read my script out loud to see if what I am saying matches with the video on the screen. I also see the timing as to whether I may need to cut out an unimportant sentence or two… or if I need to elaborate a little more on an onscreen sequence.

Once finalized, feel free to play the edited video and read out the script from the beginning to see how it compares with the pace of the video. No need to get it ‘spot on’ but the closer to the video pace the better. If you need to record some more B-Roll video sequences, do this now and add it to your edited video to see how your script compares.


Step 8 – Record Audio

Before starting, make sure you set up in the quietest room in your house (many uses a walk-in clothing closet), turn all devices that can make a sound off, including the sound on your laptop. With your script in front of you and your microphone set up (glass of water close by) start reading out your script aloud in a moderately paced and appropriate tone (this will depend on your business and audience). Try to keep your tone away from being too monotone. If possible, try to stand straight up when reading your script and feel free to ‘speak with your hands’ – this helps with the tone of your voice.

Travis Lima recording a video voiceover.

If you make a mistake, stop and pick it up from the last sentence you were happy with. You can edit out any mistakes later. This can be quite a nerve-wracking experience at first, but you get used to it the more you do it.

If you are confident enough, another option is to record your screen along with your sound at the same time, just like many Youtubers and tutorial makers do when recording a screencast. This is a great way to minimize editing and double recording. For me, I usually make a lot of mistakes and have this nasty habit of uttering the words “um” and “ahh” every few sentences when trying to multitask or record, so I have opted for a longer, more edited approach. 🙂


Step 9 – Edit Video with Audio

At this point, you should have an initially edited video and an audio file ready to go. Import your audio clip into your video editing software, and now pair up the audio file with the video. Cut out pieces of the audio file that need to be cut, slow down or speed up the video if you need to get a bit more video to meet the length of any of your sentences.

Pro Tip – To extend a sequence as long as you need, you can pause the video and take a snapshot of your screen. Then cut split the video file and put a ‘still frame’ in between the two video pieces.

Once done, watch the video from start to finish to make sure everything is paired up and timed well.


Step 10  – Added Extras

Add in any extras to your video (if necessary) like background music, graphics, subtitles, intro animations or posters etc. Once you have added in any extras, make sure to watch your video over again to make sure everything still lines up nicely.


Step 11 – Export Video

Once your video is ready to go, Export your video with the relevant settings. I used this video as a guideline to export my video, but based on your needs you may need something else. When your video is exported, you may want to compress your video. I use Handbrake(free) an amazing video compressor that has reduced the size of my videos drastically without losing video quality.

Pro Tip – when compressing your video, make sure to select the “Web Optimized” checkbox. This helps buffer your video as opposed to loading it entirely before displaying it.

Conclusion

To close, I would like to encourage you to get out there and make some videos. This guide is packed with a lot of information but is intended to be more of a guide that you can refer to rather than being a ‘set in stone’ process of making videos. In fact, I took a process from another YouTuber and the more I made videos the more I tweaked the process to suit my style and way of working. If you are feeling overwhelmed, take heart. You are not alone and every single content creator sat in the very same seat you are in now, feeling the exact same way.


Trav’s quick-fire, last-minute tips:

  • For your first video, try to make a quick, rough test video. This video needs to be unpolished and quickly made. Now that you have completed a video, make another, try to make this one a little better than the last one. Repeat process.
  • Get started with what you have. You may not enjoy making videos so don’t invest in gear until you are certain you will use it and it will provide value to your content creation endeavors.
  • YouTube and Google are your friends. Don’t know how to fade a video to black? Do an internet search for it!
  • Use online services (again) to buy music, graphics, animations for your videos. Learning how to do something from scratch is great. But some skills will require major time investment where you could spend $5 to get it done right now.

Allow members to optionally exclude their profile from the Member Directory

This code will add an “Exclude my profile from the member directory” field at membership checkout when using the Member Directory and Profile Pages Add On for Paid Memberships Pro.

"Exclude my profile from the member directory" field at checkout.


About the Recipe

The Member Directory and Profile Page Add On includes functionality to allow members to remove their profile from display. This field is added by default as a field on the user’s WordPress Profile. The recipe below adds that field at membership checkout (note that this recipe requires the Register Helper Add On).


The Code Recipe

This code recipe requires a Plus Account or higher.

View Membership Options

Add a customized notification banner to alert your members of upcoming expiration.

This code recipe adds a notification banner to remind members that their account will expire within 7 days—or any custom timeframe you would like. You can use the recipes with any WordPress theme, or specifically with a membership site using Memberlite.


About the Code Recipe

By default, Paid Memberships Pro will send members an expiration email notice 7 days prior to their expiration date (by the way, if you want to add more email expiration warnings, see our Extra Expiration Warning Emails Add On).

This recipe adds an expiration warning directly on your site, reminding the logged in member that they must renew to maintain access. The banner will only be shown to a member that has an active membership level with an expiration date within the next 7 days. You won’t need to rely on email delivery, receipt, or that your member will actually read the message.

If a member decides to renew their membership by clicking the “Click here to renew membership” link, they will be redirected to the membership levels page. From here they can select their desired membership level and proceed to checkout. They will no longer see the message


This code recipe requires a Plus Account or higher.

View Membership Options

PMPro Update 1.9.5

Version 1.9.5 of Paid Memberships Pro is out with support for the new privacy tools added in WP 4.9.6 and a handful of bug fixes.

Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 1.9.5 specifically here.

More information about the privacy-related updates can be found in our blog post here: Getting Ready for GDPR.

The full list of updates is below.

  • BUG FIX: Added ‘error’ to the list of default order statuses.
  • BUG FIX: Fixed issue where PayPal recurring_payment messages with status “Pending” were treated as “Failed” by our IPN handler. (Thanks, Matt Julian)
  • BUG FIX: The redirect away from the billing page needed to be in the preheader instead of the page shortcode.
  • BUG FIX/ENHANCEMENT: Using the pmpro_getOrderStatuses() function in adminpages/orders.php instead of redundant code there.
  • BUG FIX/ENHANCEMENT: Passing the $order as a second parameter to pmpro_after_checkout when called from the PayPal IPN handler. (The $order was being passed already for “regular” checkouts.)
  • ENHANCEMENT: You can now sort by the Membership Level column added to the users list in the dashboard. (Thanks, Matt Julian)
  • FEATURE: Added support for the privacy features added in WP 4.9.6. Details below.
  • FEATURE: Added suggest privacy page text.
  • FEATURE: Added PMPro-related user meta fields, membership history, and order history to the personal data export. You can filter which user meta fields are included in the export using the new pmpro_get_personal_user_meta_fields filter.
  • FEATURE: Deleting PMPro-related personal data fields when personal data is erased. The ereaser deletes a number of user meta fields (filterable through the new pmpro_get_personal_user_meta_fields_to_erase filter). A user’s membership history and order history are retained unless the user is deleted.
  • FEATURE: Now saving a log of when the TOS page is agreed to at checkout. The ID and date modified of the TOS post is saved along with a timestamp of when the TOS was agreed to. This information is shown on the single order page in the admin, the orders CSV export, and on the edit user profile page in the admin. Note that this feature does not yet backport any data for existing users or ask users to re-agree to the TOS if the TOS has gone out of date.

Change the wording ‘Membership’ to ‘Subscription’ for Paid Memberships Pro

This is a simple code recipe that will allow you to change the wording “Membership” to “Subscription” for Paid Memberships Pro.


About the Recipe

Depending on where your target membership audience lives or the type and location of your business, the word “Subscription” might be more familiar than “Membership”. The code recipe below uses the WordPress gettext filter to translate the word “Membership” to “Subscription” throughout the Paid Memberships Pro Plugin.

If you would like to change the word “Membership” to something else, you can do so by editing the code of this recipe by replacing “Subscription” with your desired label. If you are a Paid Membership Pro Plus Member and need some help with this, please reach out to us on our Member Support Forums.


The Code Recipe

This code recipe requires a Plus Account or higher.

View Membership Options

Getting Ready for GDPR

WordPress has released its latest version, 4.9.6, which includes privacy-related updates intended to help your site comply with the European Union’s General Data Protection Regulation (GDPR). Continue reading for background information on these updates and to explore the three new GDPR-related tools in WordPress 4.9.6 and Paid Memberships Pro 1.9.5, including:

  1. Suggested Privacy Policy page language related to PMPro-captured data,
  2. Included membership information in the personal data export, and
  3. The membership data that will be erased or anonymized as part of the user’s right to delete their personal information.


Background Information

On May 25th, 2018 the grace period for the European Union’s resolution instituting better privacy standards will end. The GDPR demands that site administrators, as well as all parties involved in the production of a site, pay careful attention when handling user data, as well as make accommodation for a user’s data to be exported or erased upon request.

Whether or how this regulation applies to websites outside of the EU is a legal question being discussed vigorously right now, but my general understanding is that these regulations would apply to any site worldwide with EU visitors. And so unless you specifically target a certain geography or exclude EU users, this would mean the GDPR applies to your site. Even if you aren’t concerned with the legal implications, many of the GDPR-related suggestions offer a good way to be more transparent with your users regarding their data privacy.

Back in April, we published a blog post outlining the GDPR requirements from a high level. In this post we will review the recent changes in WordPress core to assist you with attaining compliance, how Paid Memberships Pro will integrate with those core processes, and discuss the implications of the new regulations for site owners, administrators, designers, and developers.

There are 3 new tools in WordPress 4.9.6 that PMPro is now integrating with to help you to update your privacy policies and attain GDPR compliance.


Privacy Policy Page

WordPress 4.9.6 introduces a setting to designate a specific “Privacy Policy” page. To set an existing page as the Privacy Policy page or create a new Privacy Policy page, go to Settings -> Privacy. When editing the designated Privacy Policy page, a link is shown at the top of the editor to a guide “for recommendations on what content to include, along with policies suggested by your plugins and theme”.

We have added a section to the guide with suggested language to include in your Privacy Policy. At this time, the default text includes the following:

Data Collected to Manage Your Membership

At checkout, we will collect your name, email address, username, and password. This information is used to setup your account for our site. If you are redirected to an offsite payment gateway to complete your payment, we may store this information in a temporary session variable to setup your account when you return to our site.

At checkout, we may also collect your billing address and phone number. This information is used to confirm your credit card. The billing address and phone number are saved by our site to prepopulate the checkout form for future purchases and so we can get in touch with you if needed to discuss your order.

At checkout, we may also collect your credit card number, expiration date, and security code. This information is passed to our payment gateway to process your purchase. The last 4 digits of your credit card number and the expiration date are saved by our site to use for reference and to send you an email if your credit card will expire before the next recurring payment.

When logged in, we use cookies to track some of your activity on our site including logins, visits, and page views.

You should make sure to update this default text based on how you’ve specifically implemented PMPro on your site, what your payment gateway options are, and which PMPro Add Ons your are using. If you are using Add Ons that integrate with third parties (e.g. email marketing services), be sure to mention what information is shared and how. If you are using Add Ons that collect additional information at checkout, be sure to mention what that information is and how it’s used.

The new regulations state that policies should be clear and easy to understand. Avoid using any unnecessary legal jargon. Your Privacy Policy should be easy to find on your site. Place a link to your Privacy Policy in your main navigation and/or footer area.


Terms of Service

In order to require members accept the Privacy Policy when checking out through PMPro, you must set a “Terms of Service” page on the advanced settings tab of the PMPro settings. This will add a section to the checkout page above the submit button that shows the full text of your Privacy Policy along with a checkbox that is required to complete checkout.

While we use the term “Terms of Service” or “TOS” in our settings, your page can be named “Privacy Policy” or anything else. On some sites the Privacy Policy and Terms of Service (or Terms of Use) are separate documents. We recommend combining them into one document or linking each document to each other.

Prior to PMPro version 1.9.5, the TOS checkbox was required but did not store any data to track that agreement. So if you added the TOS sometime after launch, there was no way to tell which of your users actually agreed to the TOS besides checking the date they signed up vs when you published your TOS.

As of PMPro version 1.9.5, we now store a “consent log” for each user marking the post ID and date modified of the TOS page at the time of checkout. This information is linked to and shown on the order in the WP dashboard and on the edit user profile page in the dashboard.

A way to require existing (pre-version 1.9.5 users) to agree to the TOS or require users agree to the TOS again after it has been updated would be a useful feature. We are working on a way to do this with PMPro, and will include it in a future release.


Export Personal Data

The GDPR includes regulations related to the “Right to Access”, which basically is the right for users to request a copy of all personal data a website tracks for them. In WordPress core, this has been implemented as a tool to “Export Personal Data” for any email/user on your site (with most WP setups, it’s possible to comment on a blog post without being a user).

By default, exporting a user’s personal data is a manual process kicked off by a WP admin. You enter an email address into the form to send a request. The user then needs to click a link in that request email to approve the export. Once the link is validated, the admin will have a button to click to send the user their data as a zip file in email, as well as a link to download the zip file directly.

There are some plugins coming out that try to make this process easier, so users can make the request from the frontend of your website without the admin needing to get involved. I believe that there should always be a manual admin step to export the data to enable you to confirm that the request is legitimate. One thing you can do is update your contact form/page to include a subject line suggestion for “Request an Export of Personal Data”, and then manage the rest of the process manually from the Tools -> Export Personal Data page in the dashboard.

Version 1.9.5 of PMPro adds all PMPro-related data into the export. This includes the user’s business address, the expiration date and last 4 digits of their credit card if one was used, their membership history, their order history, and the log of logins/visits/views that PMPro tracks.

Some information is notably excluded from this export. If you use Stripe or Braintree as your payment gateway, we do not share the user’s “customer ID”. In our opinion, this information was generated by your site for your site use and does not constitute “personal data”. We also do not include the “Notes” section of the orders exported. Traditionally the notes section is used by Add Ons for various tracking purposes (e.g. to note an affiliate code used) and may contain sensitive information written by the site owner not intended to be viewed by the customer.

Soon our Add Ons, including Register Helper, will also include their data in these exports.


Erase Personal Data

The GDPR includes regulations related to “Right to be Forgotten”, which basically is the right for users to request that their personal data be deleted from a website. In WordPress core, this has been implemented as a tool to “Erase Personal Data” for any email/user on your site.

Similar to the Export Personal Data tool, by default a WordPress admin must manually start the process to erase a user’s personal data. Again, we suggest adding a subject line suggestion to your contact form for “Request Erasure of Personal Data”, and then handling the rest of the process manually from the Tools -> Erase Personal Data page in the dashboard.

Version 1.9.5 of PMPro adds an “eraser” script. The script deletes some data stored in “user meta”, including the user’s billing address, the expiration date of their credit card, the last 4 digits of their credit card, and the login/visit/view tracking data.

The script does not delete the member history or any orders associated with the user. In our opinions, this information usually needs to be retained for business records. The GDPR does allow for information to be retained at the site owners discretion.

The script also does not cancel any memberships or subscriptions at the gateway. In most situations, you will probably want to do this as well for your members by canceling their membership manually from the edit user page or by deleting the user.

Note that “erasing” a user is not the same as deleting them. Erasing will delete or anonymize certain data about a user based on rules implemented by WP and the plugins you are using. Deleting a user will be a harsher action that will delete all information stored about the user. When a user is deleted (vs erased), PMPro will delete the user’s membership history and will cancel their membership and any subscriptions stored at the payment gateway. Any orders associated with the user will be retained, but unlinked from that user.


In Summary

Update to WordPress 4.9.6. Update to PMPro 1.9.5. Take this time to create or update your privacy policy and designate that page as the Privacy Policy to WP and PMPro by going to Settings -> Privacy and Memberships -> Advanced Settings respectively. Update your contact form to mention it’s possible to request a data export or for personal data to be erased.

Let us know if you have any questions about these new privacy features, the GDPR in general, or other issues we didn’t address in this post. We will provide updates to our blog here as we update our core plugin and add ons as new features become available.

Add text before the submit and Checkout button on the PMPro checkout page

Do you have something you want members to know about before they click the ‘Submit and Checkout’ button on your checkout page? Use this code recipe to insert some text, HTML or both before the button.


About the Recipe

This code recipe will enable you to add text/HTML immediately before the Submit and Checkout button located on the Paid Memberships Pro Checkout page. This is a great way to add a little bit of important information that you want your soon to be members to know about.

If you are thinking of using this to display your Terms and Conditions to members, please see our default Terms of Service feature found under the Advanced Settings of the plugin.


The Code Recipe

This code recipe requires a Plus Account or higher.

View Membership Options