How to enhance the appearance of your Membership Checkout page by level using CSS.

If you’re looking to customize the general appearance of your Membership Checkout, one of the easiest methods to use is styling the page via CSS. We have some tutorials on enqueueing a customizations stylesheet for general PMPro Customizations, but what if you want to modify the appearance for a specific level ID at checkout?

Continue reading to learn how to customize the appearance of a specific level’s Checkout process.


A little background on customizing Paid Memberships Pro

There are a few ways you can modify your plugin-generated pages for Paid Memberships Pro, each requiring a different level of experience with PHP, CSS, and WordPress.

Some methods we regularly recommend include:

Keep in mind that when you use a custom template, you are completely overriding the core plugin’s template files and it will be important to keep your template up to date as improvements or bug fixes are release.

This article aims to demonstrate a few CSS-only adjustments you can make to your Membership Checkout page.


Code Recipe #1: Use the included CSS selectors filtered via the WordPress body_class() hook and [pmpro_checkout] shortcode output.

By default, Paid Memberships Pro adds a class to your site’s body tag using the WordPress body_class() hook. These are loaded on the pages assigned under Memberships > Page Settings as follows:

  • Account Page body.pmpro-account {}
  • Billing Information Page body.pmpro-billing {}
  • Cancel Page body.pmpro-cancel {}
  • Checkout Page body.pmpro-checkout {}
  • Confirmation Page body.pmpro-confirmation {}
  • Invoice Page body.pmpro-invoice {}
  • Levels Page body.pmpro-levels {}

You can use these class selectors to target specific elements generated in the page or to override elements in place by your theme. For example, if you wanted to hide the page menu on the checkout page and your theme didn’t have a template available that has a hidden menu, you could add the following custom CSS:

body.pmpro-checkout .navigation { display: none; }

Note that your theme may have a different navigation area class or ID that you need to target by this code.


Targeting a Specific Level’s Checkout Form

In addition to the body_class() filter, your Membership Checkout shortcode also adds a div wrapping the checkout form that includes the level ID being purchased. You can target this form area by level using the following format:

#pmpro_level-1 .pmpro_form { }

This will add custom CSS only for a Level 1 checkout. You can even target specific sections of the checkout page using the built-in selectors in the page. Some that are commonly modified include:

/* the "Membership Level" section */
#pmpro_level-1 .pmpro_form #pmpro_pricing_fields { } 

/* the "Account Information" section */
#pmpro_level-1 .pmpro_form #pmpro_user_fields { } 

/* the "Billing Address" section */
#pmpro_level-1 .pmpro_form #pmpro_billing_address_fields { }

/* the "Payment Information" section */
#pmpro_level-1 .pmpro_form #pmpro_payment_information_fields { }

/* the "Terms of Service" section */
#pmpro_level-1 .pmpro_form #pmpro_tos_fields { }

/* the "Submit and Checkout" button section */
#pmpro_level-1 .pmpro_form .pmpro-submit { }

Use your browser’s “Inspector” feature to explore more class selectors available on the checkout page or other plugin-generated pages in Paid Memberships Pro.


Code Recipe #2: Insert Custom CSS via wp_footer

The recipe below will allow you to target specific checkout pages by level ID and insert your custom CSS.

Using this method, however, will allow you to insert some Custom CSS into the Footer section of your desired checkout page. In the particular example below, a user wanted to remove the discount code fields from their Free Membership Level Checkout Page. Feel free to alter the Membership Level ID and the Custom CSS of the code recipe below to suit your needs.

This code recipe requires a Plus Account or higher.

View Membership Options


Want to do more?

I regularly joke that with WordPress (and Paid Memberships Pro) there is “Always a hook for everything!”.

While it might not always be true, there are lots of ways to write custom functions, target elements via CSS selectors, or insert your own classes via existing filters, such as the WordPress post_class() filter and more.

We even have a recipe for adding the logged in user’s specific level ID that you can read more about here.

If you’re a Plus or Unlimited member, please get in touch with our support team for more guidance on these examples or other style-related questions.

Our plugin pages are very lightly styled so that your chosen theme’s default forms appearance can create a seamless experience for members. If you’d like to enhance the appearance of plugin-generated pages let us know and we can help provide direction to you or your theme author.

Using the [pmpro_member] Shortcode to display current member information.

I’ve been asked this simple question many times recently: “How do I display the current user’s membership level in my theme?”

This post details how to use the [pmpro_member] shortcode, included in the main plugin, to show specific information about the current logged in user’s membership.


Why would you want to do this?

We created the [pmpro_member] shortcode so that you can build a more robust and personalized experience on your membership site.


How to use the shortcode:

You can place this general shortcode anywhere in your site, either in post content or widgets, or via template files using the WordPress do_shortcode() function.


Available shortcode attributes:

The shortcode accepts one single parameter, with a specific set of values as listed below. These values will pull the data directly from the current logged in user record.

[pmpro_member field="membership_name"]

Supported “field” Values Include:

Membership Level Fields:
  • membership_id
  • membership_name
  • membership_code_id
  • membership_code
  • membership_initial_payment
  • membership_billing_amount
  • membership_cycle_number
  • membership_cycle_period
  • membership_billing_limit
  • membership_trial_amount
  • membership_trial_limit
  • membership_startdate
  • membership_enddate

Fields Stored in the users table
  • user_login
  • user_email
  • user_url
  • user_registered
  • display_name

Payment Fields Stored in user_meta:
  • bfirstname
  • blastname
  • baddress1
  • baddress2
  • bcity
  • bstate
  • bzipcode
  • bcountry
  • bphone
  • bemail
  • CardType
  • AccountNumber
  • ExpirationMonth
  • ExpirationYear


Learn more about General Shortcodes in Paid Memberships Pro »

How to use a Page Builder to create a custom Membership Level Pricing page.

The landing page for your levels is the primary place your site will attract and sell its membership products. Our plugin includes a few options to design this page, including the default [pmpro_levels] shortcode and the enhanced options when using the Advanced Levels Page Shortcode Add On.

What if you need more control over this page and would like to design a completely custom page for your levels? In this article, I will take you through the process of building a new membership levels page using the Elementor Page Builder, an open source plugin available in the WordPress plugin repository.


Did you know…

You do not need to use the default plugin-generated Membership Level page for your membership site. In step 2 of the plugin setup process, a page named “Membership Levels” is automatically created with the shortcode [pmpro_levels]. You can customize this page depending on your preferences, skill level, and the needs of your membership site.

A few ways you can customize the levels page include:

  1. Use Custom CSS to adjust the default layout.
  2. Create your own custom Page Templates for the levels page layout.
  3. Replace the default shortcode with the options included in the Advanced Levels Page Shortcode Add On which includes column-based or comparison-type options.
  4. Use a Page Builder or your theme’s included “pricing page” layouts to craft a totally custom page.

In this article, I’m focusing on the last option above and will demo how to use the Elementor Page Builder to create a Membership Levels page.


Video Demo


1. Choose the method that works for you.

Your skillset and goals will generally determine the method that you choose to build your membership levels page.

You do not have to use a Page Builder and might find that using your theme’s included layouts or theme’s shortcodes to create your membership level page will be easier. Chances are, you already have an idea of what will work for you. I chose to use Elementor in this article because it is a popular page builder plugin that many of our support customers are using.

Screenshot of the Elementor Plugin Homepage


2. Develop your membership levels page.

Now that you have chosen the tools needed to create your levels page, it is time to start building.

These steps assume you are working on an existing membership site and want to create the new design without affecting the current site’s levels page. If you are setting up a brand new membership site, you can directly edit the generated page for your Membership Levels. Just remove the [pmpro_levels] shortcode from that page and begin your work.
  1. Navigate to your Dashboard > Pages > Add New.
  2. Enter a title for your new membership levels page (mine is “My Level Page”).
  3. Start creating the layout exactly as you need it. Feel free to get creative here. Enhance the page with images, comparison tables, testimonials and more. This is the primary page your potential customers will visit to explore your product and, hopefully, convert to members. It’s important to make the page as compelling, clear and attractive as possible.

Screenshot of admin developing a membership level page using a page builder.

Pro Tip: Keep this page as concise, clear and simple as possible. It can be tempting to add a whole lot of detail to this page, but remember that confusion often leads to “cart abandonment”.

3. Link “buttons” to the level-specific membership checkout page.

As you can see from my screenshots, I created a membership level page that gives a little more information on the two membership levels that I want my users to sign up to. One level is free; the other is a premium membership.

I will now need to link up my membership checkout page to each of my “Sign Up” and “Buy Now” buttons in the layout.

In most cases, the URL for membership checkout will be something like this:
https://SITEDOMAIN.com/membership-account/membership-checkout/?level=1

This URL is primarily the same for each level checkout page—you just need to update the last attribute of the URL with the appropriate level’s ID.

  1. Navigate to the default Membership Levels Page and click the button to membership level that you want to link.

    Screenshot of default Paid Memberships Pro levels page


  2. Copy the URL of the checkout page. Notice that each URL will include the membership level’s ID. In my case, I am linking my “Gold” Membership Level (which has a level ID of “18”). You should see something similar to /membership-account/membership-checkout/?level=18

    Screenshot of admin copying the URL of a Paid Memberships Pro Checkout page

    Pro Tip: You can automatically include a discount code in the URL by adding the attribute &discount_code=CODENAME at the end of the button’s link to checkout.

  3. Add the copied URL to the appropriate button/link that you created on your custom membership levels page. Repeat steps 1-3 for each Membership Level you have added to your custom page.

    Screenshot of Admin pasting in a link to redirect users to the checkout page


4. Last Step: Set your newly created Membership Level page as the default.

This last step will ensure that every generated link to your membership levels page will direct users to your new/custom page instead of the plugin-generated page. If you have inserted a link to the membership levels page within your post content, you will need to manually update those links to this new page.

  1. Navigate to your WP Dashboard > Memberships > Page Settings > Level Page > Select your new membership level page.

    Admin seeting Paid Memberships Pro Default Levels Page


Pro Tip: As a clean up step, you will also want to delete the old (plugin-generated) membership levels page and redirect that deleted page’s slug to this new page. You can alternately update your new page’s slug to match that of your previous page.

That’s it – and that’s alot.

If you have any questions about using this process to create the membership levels page of your dreams, please share a comment below.

How to Set Up Your Membership Level Pricing

This guide covers some of the most common pricing models for membership sites and how to configure level pricing for your site. It’s a useful guide if you’re just getting started with Paid Memberships Pro and would like to learn the different ways you can potentially charge members.


How to set up your Membership Level Pricing

Paid Memberships Pro enables you to charge your members in a variety of ways, including:

  1. Set up a one-time/one-time “lifetime” payment for membership.
  2. Bill members on a recurring monthly subscription.
  3. Charge members on a yearly basis.
  4. Set up a trial for your members before having them commit to a full membership.

You can offer all of these pricing models and more using Paid Memberships Pro. Below are a few of the most common pricing options we have seen.


Once Paid Memberships Pro is installed on your site, the following settings can be configured in your WordPress Dashboard under Memberships > Membership Levels > Add New Level:


Video Demo


Setting up a once-off payment.

Here are the steps to create a one-time payment that will charge members when they signup for a membership. The membership can last indefinitely or for a specific amount of time.

  1. Set the amount you want to charge immediately at checkout in the “Initial Payment” field.
  2. If necessary, add a Membership Expiration to this level by clicking on the Membership Expiration checkbox (more on this later). If left blank, members will be able to access members-only content indefinitely.
  3. Save your Settings
Default: Change link appears (before CSS)
Pro Tip: Sell access to individual pages or posts, or sell a la carte items for a flat fee by using our AddOn Packages Plugin.

Setting up a monthly payment.

To charge monthly for your site’s membership, do the following:

  1. Set your initial payment to the amount you want to collect immediately when a member completes a checkout on your site. This can be the same amount you plan to charge on a recurring basis or it can be a higher or lower amount.
  2. Select the “Recurring Subscription” checkbox to open up more billing options.
  3. Set the Billing Amount and the Billing Frequency. If you want to bill clients monthly be sure to set your frequency to “1” per “Month(s)”
  4. Save your Settings.
Default: Change link appears (before CSS)

Setting up annual payments.

To set up a yearly pricing model for your membership level, do the following:

  1. Set the amount you want to charge immediately at checkout in the “Initial Payment” field. Again, you can set this first payment to be a higher or lower price than you plan to charge for subsequent years.
  2. Select the “Recurring Subscription” checkbox to open up more billing options.
  3. Set the Billing Amount and frequency. If you want to bill clients yearly be sure to set your frequency to “1” per “Year(s)”
  4. Save your Settings.
Default: Change link appears (before CSS)

Setting up a membership level with an expiration date.

In some cases, you may want to add an expiration date to your Membership Level, if you would like to add an expiration date to your level, do the following:

  1. Navigate to Memberships > Memberships Level in the WordPress Dashboard
  2. Select a Membership Level to edit.
  3. In the Membership Level Settings, check the “Membership Expiration” checkbox to open up the Membership Expiration options.
  4. Set the duration of the membership access. For example, “3 Month(s)”
Default: Change link appears (before CSS)

How to improve your sales funnel and grow membership by giving something away for free.

Your prospects and leads are a group of potential customers that have an interest in your business and products, often referred to as your “list.”

In this article, we tackle the problem of building and growing your list. We’ll show you how to leverage a Free Membership product as the first phase of your business’ sales funnel and (ultimately) help you convert list members from prospects to lifetime customers.

Free Giveaway Graphic


Grow your list by giving something away for free.

One of the most popular growth models that you can adopt is to give away content, services, and/or products for free. We all know there’s no such thing as a free lunch, so in return you ask the user to share their contact details in order to access this free item.

Some of the products we have seen leveraged for this model include:


Helpful Blog Posts

Instructional Videos

Free Trials


15-minute Video Consults

Limited (but useful) Feature Software

E-book Downloads

The idea is not based in tricking people into signing up, but rather to demonstrate that you have something truly valuable that they can use and benefit from now. It’s a way to introduce yourself to a potential customer without asking for payment right away. It’s a way to enrich someone’s life and create a relationship with a customer who may have otherwise overlooked your business.

Essentially, any time you are deciding what content to distribute free of cost, it needs to be a strategic decision. You need to be thinking three steps ahead. Because by giving away something for free, you’re looking to create leverage that allows you to eventually do something for profit, right? Right. So figure out what kind of content will get you what you want, and who needs to see it for that to happen.
— Gary Vaynerchuk, Why You Shouldn’t Charge For Your Best Work


What happens next?

After these customers have used and (ideally) enjoyed and benefited from whatever you gave them, then you can start to actually sell. Now is the time to share something else that customers can pay to see, use or experience. Because you have established trust, your users will be more likely to pay you for some of your premium content.

Every user that joined as part of your “free” promotion is now part of a database that you can use to further interact with—even if it is much later on. This is the crux of how to grow your sales funnel using this model.

It can seem counterintuitive to focus your efforts on a strategy that is not designed to get you paid. Picture this: you could spend a small fortune on advertising via social media, Google Adwords, and other platforms, adding you to the sea of ads constantly bombarding users for their attention (ads the average person has gotten really good at ignoring). Or, you could direct market to your personal list of thousands of existing (free) customers to let them know about your premium membership offering. If they liked your free stuff, they are going to simply LOVE your Premium goodies.


Giving away something (of value) for free is a great business model because:

  • People love getting free stuff. If it is free and valuable you can gain popularity quickly.
  • It gets people using your service or product which should increase feedback—helping you make a better product or service.
  • You can build an invaluable customer base full of customer contact details to use for ongoing promotion and marketing efforts.
  • It makes marketing more successful because you’re talking to your own user base. It is a known fact that there’s a higher return on investment when marketing to existing customers.

Building a Customer Database.

Among all the other benefits and goodwill you create by giving away something for free, building a customer database (sales funnel) is the primary benefit of this growth method. Even if you aren’t ready to sell to this audience today, you can start building a database of potential customers immediately. Yes, it is great to have thousands of social media followers. Yes, social media is still a great way to interact with and build relationships with your audience. Just know that you don’t control a social media platform or how your followers use that platform. At any given time your chosen social media platform may change. Dramatically. You can’t rely on a third-party to maintain your “list.”

If you have built your own list of customers email addresses, you have complete control over how and when you interact with (market to) them.

Remember to be considerate with your user’s data, taking care to provide choices for unsubscribing or modifying to hear from you and how frequently. Having access to all of these email addresses gives you great power…and we all know what comes with ‘great power’, don’t we?


Let’s explore how to use Paid Memberships Pro to build your customer database. The same primary steps apply no matter what your “free” promotion is. We’ll also cover a few methods to deliver your “free” item in the steps below.


Use Paid Memberships Pro to build your customer database.

To do this, you will need to:

  1. Create a Free Membership Level using Paid Memberships Pro and have some content linked to this free level that will help your members.
  2. Set up an email marketing platform that you can use to send out emails to those who sign up for your membership. We have an integration for a couple of them, for this article, I am using MailChimp as my example.
  3. Connect your email marketing software to your Paid Memberships Pro Level using an integration, like this MailChimp Integration

1. How to set up a Free Membership Level.

Once you have Paid Memberships Pro is installed and activated, the next step is to set up a Membership Level. To do this head over to the “Memberships” tab that should now be accessible from your WordPress Dashboard and select the Membership Level option.

Membership Level Set up Screenshot - Step 1


Now, navigate to the top of the next page and select the “Add New Level” button.

Add new level button screenshot

Give your membership level a name, description, confirmation message. Under the Billing Settings, make sure to leave it blank (it’s a free level). Save the level.

Membership level set up for free level

Now you can now navigate to your “Membership Levels” page and view your Free Membership level.

membership-level-page

Note: If you are looking for more information on how to install, activate and set up Paid Memberships Pro, I would recommend taking a look at our Initial Setup Video, for a general walkthrough of plugin setup.

2. Set up a MailChimp Account and the MailChimp Integration for Paid Memberships Pro

If you haven’t already set up a MailChimp Account and need to do that you can get started here. I am not going to cover how to set up MailChimp in this article but there is an abundance of online resources to help you out with this.

We have developed a MailChimp Integration Add On that allows you to add members to MailChimp lists depending on their membership level. The integration also merges in the user’s membership level as additional contact information. This allows you to segment your members by level and send specific marketing emails to each group.

Installing the PMPro MailChimp Add On

  1. Upload the ‘pmpro-mailchimp’ directory to the ‘/wp-content/plugins/’ directory of your site.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Navigate to the ‘PMPro MailChimp’ admin page in the WordPress dashboard Settings Menu (WP Dashboard > Settings > PMPro MailChimp) to configure your MailChimp API Key and Lists.

Locating your MailChimp API Key

  1. Log in to your account at MailChimp.
  2. Click your profile name in the upper right corner to expand the Account Panel, and choose Account.
  3. Click the Extras drop-down menu and choose API keys.
  4. Copy an existing API key or click the Create A Key button.
  5. Name your key descriptively, so you know what application uses that key.

Copy and paste your MailChimp API key into the “MailChimp API Key” field under Settings > PMPro MailChimp.


3. Add Free Members to MailChimp lists.

Once your API key is loaded into the integration options, you should see a list of MailChimp lists available in your account. Select the appropriate lists for members based on their level. If you need to create a new list you must do so in your MailChimp account dashboard.

pmpro-mailchimp-settings

With this integration, you can also offer “Double Opt-ins” for members. This is especially important for customer in Europe focused on recent GDPR laws that are now in place.

pmpro-mailchimp-levels-lists

Remember that in addition to assigning members to lists based on level, you can also segment users directly in your MailChimp account based on our default contact merge fields for a user’s membership level. This is sometimes a better approach because MailChimp will charge you double for a subscriber that is on two separate lists.


4. How to deliver your “free” content to your members.

It is important to make it easy for free members to access the content they were promised. Here are a couple of ways you can make it nice and simple for your members to get their hands on the free content you are offering them.

  1. Set up a “welcome” autoresponder email for all new member signups in your email marketing program with a link to read your eBook. You can also include a couple of other useful links pointing to different parts of your site. Just be sure to make it easy for your members to see and download the eBook as this is the main reason for them signing up.
  2. When a new user signs up add a link to view your instructional video to your level’s confirmation message and on the membership account page.
  3. Add a link to the special free members-only blog category to the members-only menu using the Nav Menus Add On
  4. Set up a service like Calendly and share a link for members to create an appointment to chat.
  5. Use our Download Monitor Integration to offer members-only downloads of eBooks or other content.

The way you deliver the promised “free” content will vary based on what you’re giving away (surprise!). If you have a specific type of item and would like some feedback on how to deliver it, please post a comment below.


Share your recommendations with us!

Have you already built an amazing ‘freemium’ business and have some tips and tricks? If there’s something you feel I missed in this article, please share in the comments below. I would love to see what you are building and how you are using Paid Memberships Pro to #GetPaid.

Using Page Builders to Enhance Your Site’s Membership Pages

Page builders are a popular way to create a more visually appealing user experience on your site. Many Paid Memberships Pro users are confused with how to properly use these tools alongside the required shortcodes on various pages of your membership site, such as the pricing page or membership account page.

This post covers how to resolve conflicts between plugin shortcodes and popular page builders such as SiteOrigin Page Builder, Elementor and Beaver Builder.


Ensuring Compatibility

Below are a list of common issues we see when trying to use Paid Memberships Pro with a page builder.

  1. Required page shortcodes don’t render.

    The main issue that we see related to Page Builders is that default page shortcodes, such as [pmpro_levels] or [pmpro_account], don’t render. You’ll know you are experiencing this issue if you go through the Initial Plugin Setup, then click to view your “Membership Pricing” page and see something like this:

    Not all of the Paid Memberships Pro shortcodes will render as actual content when using a live editing experience. I have seen different behavior among all of the builders I tested. The best way to ensure the page is loading properly is to save and publish your content then view the page on the frontend.

    If the shortcode still isn’t rendering, make sure you are using your builder’s standard text or shortcode widget/component/block for the page’s required shortcode. I have seen cases where the builder places your page’s shortcode in a special block type that will not render shortcodes. Here’s a list of all required shortcodes for your Membership pages.

  2. “Live Editors” don’t load or redirect to the “Membership Levels” page.

    This issue is present if you try to edit a page like the “Membership Account” page in a “Live Editor” experience, but the editor redirects you to the Membership Levels page. To resolve this, you must make sure that your administrator account has a membership level. This is due to a conflict where the builder is trying to offer a “preview” of the page, while our membership plugin is trying to restrict your access to these members-only pages. Having a membership level on your administrator account (even you create a hidden, private level that only your Admin account has) resolves this.

  3. Members-only content isn’t protected.

    Because Page Builders rely heavily on their own logic to render page layouts, sometimes the builder’s content filters run later than the Paid Memberships Pro filter. This can result in protected content being public. The solution to this issue has been covered previously in this article, which outlines how to run the Paid Memberships Pro content filters with a higher priority (after the builder has done its content-formatting magic).

    Alternately, you can use this method to redirect non-members away from members-only content. This completely bypasses the need to filter members-only content and is the most straightforward approach to tackling this issue.

  4. “Live Editor” on the checkout page doesn’t load.

    The Membership Checkout page relies on a level ID being passed through the URL (usually from the Membership Levels page) in order to display the appropriate level details at checkout. When using a live preview or editor experience, there is no level ID passed in the URL so the page either fails to load or redirects to the Membership Levels page. You can resolve this by adding a Custom Field with the key or name pmpro_default_level and value of any valid level ID. This allows the “Live Editor” to locate a level for the preview page. Now your Membership Checkout page’s live editor can draw in some level’s content and allow the preview.

  5. I don’t see the “Restrict Membership” box on the editor.

    If your page builder uses a live editing format, chances are that the “Restrict Membership” metabox is not part of this editing experience. After you have made your page design and content changes via your builder’s editor, you will need to also edit the post with the WordPress editor and select the appropriate membership levels to restrict access. Read this guide for more help on restricting content using Paid Memberships Pro.

All of the above issues have a solution, so please don’t panic. We are looking for ways to build support into our plugin for popular open source page builders. For now, we’ve tested Paid Memberships Pro compatibility with the list of Page Builders below. These were tested on a fresh WordPress site with only the core Paid Memberships Pro plugin, the Twenty Sixteen WordPress Theme and using only that specific Page Builder. If you are using another open source page builder, please post a comment below and we will test which combination of solutions are needed to make the two plugins compatible.


Page Builder by SiteOrigin

Page Builder Info: WordPress Repository | Widgets Bundle | Website

This builder is one of the most popular open source builders available via the WordPress.org Repository. In my testing, I have found that you need to modify a few of the ways our core plugin renders content in order to ensure compatibility with SiteOrigin’s builder. The code recipe below should be included in a plugin for PMPro Customizations.

In this recipe, we are removing some content filters we add to your site’s level descriptions and confirmation messages, as they were causing issues when the builder attempted to render the membership checkout and confirmation page shortcodes.

When editing the Membership Checkout page, you must set a Custom Field on the Membership Checkout page with the key pmpro_default_level and value of any valid level ID. This allows the “Live Editor” to locate a level for the preview page.

You must also make sure that your administrator account has a membership level in order to use the “Live Editor” experience. This is due to the fact that the Page Builder by SiteOrigin editor is trying to offer you a “preview” of the page, while our membership plugin is trying to restrict your access to these members-only pages. Having a membership level on your administrator account (even you create a hidden, private level that only your Admin account has) resolves this.


Elementor

Page Builder Info: WordPress Repository | Website

This builder is gaining popularity very quickly and its easy to see why. Because Elementor is a drag & drop live editor, there are some special considerations you need to make specifically when attempting to use the builder to edit your Membership Checkout page. When editing the Membership Checkout page, you must set a Custom Field on the Membership Checkout page with the key pmpro_default_level and value of any valid level ID. This allows the live preview editor to locate a level for the preview page. This step must be done before you convert to editing the page with the live preview.

You must also make sure that your administrator account has a membership level in order to use the “Edit with Elementor” experience. This is due to the fact that the Elementor editor is trying to offer you a “preview” of the page, while our membership plugin is trying to restrict your access to these members-only pages. Having a membership level on your administrator account (even you create a hidden, private level that only your Admin account has) resolves this.

You must also add a custom code recipe that filters your content later as well as removes the default content filters our plugin uses on your site’s level description and confirmation messages. The code recipe below should be included in a plugin for PMPro Customizations.


Beaver Builder

Page Builder Info: WordPress Repository | Website

Beaver Builder offers a live editing experience for WordPress and premium versions offer pre-built templates and layouts which make it simple to design well thought out content. In my testing it was one of the most intuitive builders in this list. There are a few steps to take to ensure compatibility with Beaver Builder. The code recipe below should be included in a plugin for PMPro Customizations.

When editing the Membership Checkout page, you must first set a Custom Field with the key pmpro_default_level and value of any valid level ID. This step must be done before you convert to editing the page with Beaver Builder. This allows the live preview editor to locate a level for the preview page.

You must also make sure that your administrator account has a membership level in order to use the live editor experience. This is due to the fact that the Beaver Builder editor is trying to offer you a “preview” of the page, while our membership plugin is trying to restrict your access to these members-only pages. Having a membership level on your administrator account (even you create a hidden, private level that only your Admin account has) resolves this.

You must also add a custom code recipe that filters your content later. This allows Beaver Builder to process all the layout-related filters on your content, then allows Paid Memberships Pro to apply appropriate membership restrictions. The code recipe below should be included in a plugin for PMPro Customizations.


More about Page Builder Compatibility

I have also seen some funny behavior specifically if you had generated the PMPro pages prior to activating the Page Builder. If your builder isn’t playing nicely with our shortcodes, try to open the page in the builder’s editor then save the page. For some reason this occasionally resolves the issue and then your shortcode will render.

  1. Edit each Page under Memberships > Page Settings.
  2. Swap to your builder’s rich page editing experience.
  3. Make sure the appropriate page’s shortcode is in the editor.
  4. Save the page.

Using another Page Builder?

If we didn’t cover the builder you are using or if you have Page Builder-like features as part of your theme, post a comment below and we will try to test it and work out a solution. We are only able to offer compatibility testing if the builder you are using is also open source, like Paid Memberships Pro and the page builders mentioned in this post.

Preparing for Gutenberg: the New WordPress v5.0 Editor

GutenbergA new post editing and customization experience named “Gutenberg” is coming to WordPress. This post shares how the team at Paid Membership Pro is preparing, planning, and designing for the editor’s release to offer better tools and options for membership sites running our plugin.


What is Gutenberg and how can I learn more about it?

Unless you’ve been hiding under a rock, you’ve probably heard the name and maybe know a bit about the new Gutenberg editor. Gutenberg is an open source project currently offered as a WordPress Plugin. It’s being developed on GitHub and will soon be included as a core feature of WordPress.

The Gutenberg editing experience revolves around “blocks”.

These blocks are a unified way to style content that currently requires shortcodes, embeds, widgets, post formats, custom post types, theme options, meta-boxes, and other formatting elements. By allowing rich customization without deep knowledge of code, blocks make good on the promise of WordPress: broad functionality with a clear, consistent user experience.
via WordPress.org

You can read and learn more about Gutenberg in the official handbook. If you want to learn even more, check out WP Tavern’s post on A Collection of Gutenberg Conversations, Resources, and Videos.


How does Gutenberg work with Paid Memberships Pro?

We know that some Page Builders for WordPress have specific integration considerations when using Paid Memberships Pro. We want your to know that we have tested the latest release of Gutenberg and everything in Paid Memberships Pro works as expected. Everything that works in the current editor is going to work in the new editor.

Gutenberg is largely coded in JavaScript. Some parts of that code don’t interact with the server-side PHP at all. For example, Blocks are defined in JavaScript. And so if you wanted to limit Blocks by membership level, you would need to run that filter in the JavaScript. Going forward, the PHP-based hooks and filters we use to protect WordPress content and features won’t be enough to protect all of the things being done in JavaScript.

The future of WordPress is JavaScript, so Paid Memberships Pro needs to build tools for protecting content in JavaScript. This is an important consideration for our developers and other contributors to the Paid Memberships Pro open source project.


How can Paid Memberships Pro offer Gutenberg support?

We see lots of possibilities for custom PMPro blocks in Gutenberg, and there’s huge potential to extend our core membership plugin as well as our Add Ons.

Here are a few interesting ways we hope to leverage Gutenberg Blocks for PMPro:

  1. Gutenberg Blocks for all shortcodes.

    Any shortcode in Paid Memberships Pro will have a Block equivalent, including the plugin-page shortcodes. The new Blocks will be easier to move around in your page design and can have intuitive settings for customization.

  2. Break plugin-page shortcodes into several Blocks.

    Instead of one shortcode used per plugin page, we plan to break some of our shortcodes into multiple blocks? For example, our [pmpro_account] shortcode currently has a sections attribute, allowing you to customize the display of the membership, profile, invoices, and links areas of that page. Each of these sections could be its own block, making it easier to reposition and tweak them individually.

  3. Block-level Content Restriction

    The current [membership] shortcode allows you to wrap and restrict post content for specific membership levels. We plan to create a Membership Block with settings for the specific level IDs, status, session, and more. You would then be able to nest Blocks within this parent Block and design totally unique content based on the user viewing the page.

  4. Built-in Templates for best practice layouts for your membership sales pages.

  5. Gutenberg gives you the ability to define “Block Templates”, which are groups of Blocks in a preset layout. Block Templates will be a great way to share popular page layouts for landing pages, sales pages, pricing tables and more. We will find (and develop if necessary) the layouts best optimized for conversions to share with our users.

  6. Register Helper Fields as Blocks

    We know that our users would love a drag-and-drop interface for Register Helper. We are working to create a simplified (non-code) based custom user fields structure using Gutenberg Blocks. Custom user meta fields will be visually inserted into the Checkout Page for capture at Membership Checkout, or into the Member Directory and Profile Pages for a unique layout customized to your site’s member data?


What can you do with Gutenberg NOW?

Insert the Shortcode Block with GutenbergIf you’re using Paid Memberships Pro and would like start using Gutenberg for your WordPress editing experience, follow the steps below:

  1. Install and activate the Gutenberg plugin via Plugins > Add New > “Gutenberg”. “>[Download Link]
  2. Edit your Pages under Memberships > Page Settings.
  3. Insert the “Shortcode” block located under Blocks > Widgets.
  4. Move the page’s appropriate shortcode into the Shortcode Block.
  5. Update the page.
Note that for the “Checkout” page to preview properly, you must add a Level ID to the URL (i.e. /membership-checkout/?level=1).


Video: Using Gutenberg to design the Membership Account Page

I made a brief and basic video of how you can use the [pmpro_account] shortcode sections to create a column-type layout for your membership account page. This is not how we plan to offer Gutenberg support in the future, but for now it does give you a glimpse of what is possible. There’s no background music or narration – so please play your own tunes 🙂


We will continue to post updates on the blog here as we make progress on these efforts.

10 Popular Pricing Models for Membership Sites

As you begin to build a membership or subscription business online, one of the first decisions you need to consider is pricing. More specifically, what type of pricing model do you want to use for your business?

This post aims to cover the most popular pricing models for membership-type businesses.

  1. Fixed Term Membership
  2. Recurring Subscriptions with Fixed Price per Period
  3. Front-loaded Membership Pricing
  4. Installment Plans
  5. Free or Reduced-rate Trial Periods
  6. Lifetime Membership
  7. Group Pricing / Sponsored Membership / Umbrella Plans
  8. Addon Pricing Models
  9. Utility Pricing
  10. Donations or “Pay What You Want” Membership


Remember: Price should always match the value.

Before you even begin to drool over the idea of hordes of members paying you a recurring fee each week or month, ask yourself how your membership business delivers value to its members. Is value delivered evenly over the lifetime of membership? Is the majority of value delivered in the first months of membership?

The answer to this basic question is what determines how you price your membership options. Pricing your membership or subscription options in a way that is contrary to the value delivered is a set up for failure—you do not want members to stop and ask themselves, “Hey, why am I still paying for this?” That’s a sure way to create a bad feeling and lose members.

If you’d like to read more about this topic, Jason wrote a post earlier all about this that included some case studies.

Here’s another way to think about value pricing: how much do you want to make?

Now this may seem like a silly question, the answer to which is “As much as I can possibly make!” But if you are truly honest with yourself, you should be able to set a realistic revenue target or goal. Using this revenue target, you can back into membership pricing (and possibly even refine your business model).

For example, let’s say you set a revenue target at $30,000 per month. This could be achieved via several pricing models:

  • 750 members paying you $10/week.
  • 1,000 members paying you $30/month.
  • 835 or so new members per month committed to paying you $36/year.

Which of these is most achievable given the premise of your membership site? How can you deliver value along the timeline of your membership to retain these members? Is it possible for you to grow to a member base of this size?

If you’re still thinking about pricing from this high level, you might want to read Jason’s series on pricing that starts here before diving into the details below.

If you have an idea of the type of pricing you want or otherwise just want to browse through the options below, continue reading. Here are some common pricing models we have seen used for member-based businesses.


Fixed Term Membership

In this pricing model, the membership level has a set term with expiration. Members must renew to maintain membership. We often see this pricing model used for set term of the calendar year (January 1 to December 31). This is a comment pricing model for traditional Associations and Organizations as well as benefactor groups that report membership on an annual basis and require people to “renew” that term each year.

You can do some creative things with this pricing model, such as offer a discount for early renewal, a discount for purchase a multi-year membership in advance, or even prorate membership for people who sign up mid-term.

For more reading on this model, see:


Recurring Subscriptions with Fixed Price per Period

This is a very popular model of membership pricing, where a specific price is charged “per month” or “per year” for the life of membership. Most payment gateways also allow pricing per week or custom periods like every 3 months, every 60 days, etc.

Recurring subscriptions work well for newsletter-based businesses, sites with content written by “experts” or coaches, as well as online social communities and listings sites.

The important caveat to this type of membership pricing is that you continue to deliver value each term. If your members are paying you monthly, you better be certain that there is “new stuff” (good new stuff) delivered to the member each month.

This model is very easy to set up with the base Paid Memberships Pro plugin. You would achieve this by setting an initial payment and recurring subscription of the term of your membership.


Front-loaded Membership Pricing

Jason is a fan of front-loaded pricing models—where a higher amount is charged at signup, then a lower rate is charged each term. This can be a single up front higher cost, or an installment (i.e. $100 per month for the first 3 months then $15 per month).

This is a key model to consider if your answer to when value is delivered is “mostly in the first few months” (or weeks). I see this pricing model for health and fitness sites aimed at weight loss or a software businesses with a “get started” rate then maintenance rate.

For more reading on this model, see:


Installment Plans

Installment plans are a bit like the front-loaded membership, but they do not have the ongoing recurring payment. This model is useful if you need to charge a high price but know that your customers cannot afford that large expense in one payment. I have seen this model used for executive coaching, training programs, and the sale of physical goods.

This model is very easy to set up with the base Paid Memberships Pro plugin. You would achieve this by setting an initial payment and recurring payment of the term of your membership, with a “payment limit”. You can optionally set an expiration date on membership as well. Let me break this down for a membership level that you want to charge $400 for over the course of 4 months and maintain the user’s membership for 1 total year.

  • Initial Payment: $100
  • Recurring Subscription: $100 per 1 month
  • Billing Cycle Limit: 3
  • Expires in: 1 Year

One caveat of an installment plan is that you want to lock a member in to paying for the full installment. If you’ve giving a customer a $400 physical product, and they cancel membership in the second month, you’re out a big chunk of money. See this guide for help on locking a user from changing their level during the installment period: Methods to Block Users from Logging In, Selecting or Changing Membership


Free or Reduced-rate Trial Periods

We aren’t a big fan of this pricing model, but it is one you see a lot in the wild. [Jason: I’m a fan of free trials if your goal is to get more people using your service or product. When you’re actually ready to make a profit, switching to a model that charges based on true value of your product up front is best in my opinion.]

In general, the free trial model charges a lower rate for the first few terms of membership, hoping to hook the customer into maintaining their membership after the trial ends. I have see this model used in a lot of online software and tools, but also for “subscription boxes” (get your first box – just pay shipping!), and other digital communication or financial tools.

In all of these cases, its important to remember that you must prove the worth of your full price membership during the trial period. You don’t want to price yourself so high that people aren’t able to maintain membership at the full rate, and you don’t want to deliver all the value of membership during the trial so there’s no reason for them to stay on.

If you’re a fan of the membership trial model, we strongly suggest offering a reduced rate trial instead of a completely free trial. This forces your members to be a bit committed to your product and can help insulate you from the workload created by loads of free trial members that never really intended to stick around.

For more reading on this model, see:


Lifetime Membership

You can add a “lifetime” option to almost any pricing model you select. Sometimes a reduced-price lifetime plan is offered for a limited time as an incentive for early adopters. Sometimes the lifetime plan is always available for customers who just want to pay once without worrying about recurring subscriptions.

To figure out what to charge for your lifetime plan, you would take some multiple of your monthly membership, perhaps 30x a monthly membership or 2.5x an annual membership rate. Ideally, your lifetime plans should result in the same “customer lifetime value” as someone paying per period. So having a good estimate of your renewal rates and customer lifetime value will help you to find the sweet spot.

Sometimes a higher-priced lifetime plan can be used as a decoy and will not be selected by a significant number of people, but will make your regular price look like a better deal. We’ve heard from some sites with lower-volume, higher-priced lifetime plans report that “every once in a while you get a little bonus when someone chooses the lifetime option”.

This model is very easy to set up with the base Paid Memberships Pro plugin. You would achieve this by simply setting an one-time initial payment on the membership level with no recurring subscription or expiration.


Group Pricing / Sponsored Membership / Umbrella Plans

This model is useful when you have a breakdown of individual members as well as corporate or company-type members. For this model, you would take your individual member pricing and offer a value to the parent account that is purchasing more than one membership at a time for a team of people. For example, you could offer a single membership for $125 per month and then a group license of $500 for a 5-member organization.

For more reading on this model, see:


Addon Pricing Models

In this “build your own” membership model, users may be charged a base price, then have the option to select additional membership features. These features may be added interest groups for a newsletter or blog category subscription, or a la carte features of membership, such as an annual resume review service, a consultation phone call or other “one-off” products. We have seen this model used for traditional newspapers that offer an online and optional physical printed edition.

For more reading on this model, see:


Utility Pricing

In this pricing model, users are charged based on some kind of consumption metric. You may recognize this model as used by most email marketing services that charge based on number of members in your list. Cloud hosting companies might charge based on the disk space and/or bandwidth used.

We wanted to include this pricing model even though Paid Memberships Pro doesn’t offer utility pricing in the core plugin or any of our add ons. It can be a smart model if the cost to you as a business is truly based on a member’s usage. Some gateways like Stripe and Braintree allow you to adjust a user’s subscription amount whenever you like. Others like PayPal offer changes within a certain range. With some custom coding, you could track the metric you need to calculate the monthly/annual total, generate an order for that, and then attempt to resolve that order against the customers credit card stored at the gateway.


Donations or “Pay What You Want” Membership

If you go the route of a donation-based membership, its best to enter into things with low expectations. These types of membership sites are often run by producers who would be doing their thing regardless of payment. If you’re a passionate product reviewer or write your own digital music and just want to get your stuff out there, then asking for optional donations can be a positive way to make a modest income without the pressure of a traditional membership model.

We like the “Pay What You Want” model, especially if you put some social pressure on your potential members: “Most people pay $5 per month.” Another option is to include bonuses above a certain amount to encourage higher revenue per sale.

For more reading on this model, see:


Now put on your thinking cap.

I hope this post has exposed some of the traditional and not-so-traditional ways you can price your new membership or subscription-based business. And don’t feel shy about changing a pricing model for an existing business—we did that here at Paid Memberships Pro when we really did some thinking about value pricing. The majority of our value is delivered in the first few months of membership, when the support customer is just getting their membership business off the ground. We offer a discounted annual renewal rate because there is ongoing value delivered via our blog posts, code recipes, and continued development to the Plus Add Ons.

Let’s keep the conversation going in the comments below.


Other Posts on Pricing

How to Set up a Data Backup Process for your WordPress Membership Site

The last thing any website owner wants to deal with is lost website data. This is particularly important for a membership site, where revenue is directly generated online. Keeping up to date backups of your website’s data is not as difficult as you may think. This post covers that often overlooked but highly important topic: data backups, but more specifically:


Your WordPress database contains every post, every comment and every link you have on your blog. If your database gets erased or corrupted, you stand to lose everything you have written. There are many reasons why this could happen and not all are things you can control. With a proper backup of your WordPress database and files, you can quickly restore things back to normal.
via WordPress.org

First, ask yourself “What is my current backup process?”

If the answer to this question is “I have no idea”, you really need this post. Most people aren’t aware of their backup process (or lack of one) until they experience a devastating loss of data. You don’t want to be in that position – so put a solid process in place now.

If you have some process in place, great job! You’re probably 90% ahead of most websites we work with. But be sure to also test recovering from a backup every once in a while to make sure that your backup is actually working.

I’m interested to learn any unique insights you have about your backup process in the comments below.


What to Back Up

Your WordPress website is powered by two key components: your site’s MySQL database and the files in your site’s web folder. Both components should be backed up and both offer unique backup options.

If you store protected files or video outside of your “web root folder” or on a third party service like Amazon S3, make sure that those files are also being backed up.

Depending on the size of your website and number of plugins installed, the database and files may be over 1GB of data. If this is the case, take a look at your data and see what information could be excluded from the regular backup process. Also, make sure that you are not including your backup archives in an automated backup (this would happen if you are storing a copy of your backup in the web root folder, and the backup process includes the entire web root folder).


Where to Back Up

We advise backing up in three or more distinct places. You can store a backup on your membership site’s web server, on a totally separate web server or cloud environment, emailed to a “backups” email account, as well as local copies saved to your computer, a local server, and physically saved to external media (DVD, external hard drive, flash drive).

wp-backup-infographic


When to Back Up

Depending on how frequently you update your site, it may be important to perform a data backup on a weekly or even daily process.

Since you are running a membership site, you are managing all of the key data that synchronizes the member subscriptions from the payment gateway. Losing this data would cause a huge headache and may require you to piece together weeks or months of data manually. No thank you!

We recommend setting up a more frequent automatic backup process (daily) as well as a weekly or monthly manual backup. Pick a day, put it on your calendar, and do it. Once the process is in place it will be a quick step in your workflow providing invaluable piece of mind.


  1. Option 1: Host Backups

    Your host is (or should be) mirroring your site across a few data centers. This is one small level of data assurance but not a replacement for a true backup plan. This only insulates you from your host losing your website data, not from data corruption, a virus or malware injection, or the administrator that accidentally deletes all or some of your site data (true story).

    Depending on your web hosting company, there may be a simple way to create a data backup, either via a web tool installed in your WordPress admin, or directly within your hosting account dashboard. These one-click backups can often be downloaded or emailed to you for the local/physical backup copy I discussed above.

    It’s important to make sure that this one-click backup is including BOTH your site files and the MySQL database for your WordPress site. I suggest exploring your host’s support library or contacting them directly to better understand your backup options.

    Here are some backup processes for commonly used WordPress hosts:
    WP Engine | SiteGround | Bluehost | Pagely


  2. Option 2: Direct File Transfer + Manual Database Backup

    This requires a bit more developer experience, but the basic concept is that you are manually downloading the web server files and creating a direct backup of the MySQL database via phpMyAdmin.

    Files Backup

    Connect to your web server and simply download the entire folder via FTP. Or, if you have SSH access, you can use the command line to create a .zip backup of the entire website files on the server. We create this .zip file and name it according to the date the backup was taken. A copy of that .zip file remains on the server in a “backups” folder, and a copy of the .zip file is downloaded locally to our computer and saved to external media.

    If your web root folder is called public_html, you could use these commands to make a backup. Note that we backup * (all files) and also list .htaccess separately. Because this is a hidden file, the zip command will ignore it unless you specify it like this. If you have any special caching or rewrite rules in your .htaccess file, you will need these to restore your site 100%.

    To download the .zip file, just navigate to the folder and file name in your web browser. (i.e. http://www.YOURDOMAIN.com/backup.zip)

    Be sure to delete the backup.zip file or move it out of the web root after you download to keep others from stumbling upon it.


    Database Backup

    Access your website’s control panel or web hosting admin. From here, you should be able to access your site’s MySQL database via phpMyAdmin. (You can alternately use the Adminer plugin by Inpsyde to access your MySQL database directly through your WordPress admin.

    Click the “Export” tab. We recommend the following settings:

    phpmyadmin_export_settings

    If you database isn’t too large, you can also use the plugin WP DB Backup for an on-demand backup of your WordPress database. The backup file created by this plugin is saved in your site’s /wp-content/ folder or you can download the backup file for a local copy (we recommend doing both). Backups of large databases can be slow no matter what method you are using, but because of the way WP DB Backup works, we’ve found it to be especially slow for very large databases. You can usually just leaving it running for a while in a background tab of your browser if you find this is the case.

    Database Backup From the Command Line

    You can use the mysqldump command to create a backup of your database from the linux command line. If you grab the database name, username, and password from your wp-config.php file, you can then use the following commands.

    I have this saved as a shell script outside of my web root folder and run the script before any update or risky change to the site.


  3. Option 3: WordPress Site Backup Services

    These third-party backup services offer many features related to file backups (themes, plugins, uploads), database backup, site cloning/migration, as well as optional spam security, automated restore points, and support should you find yourself in a data-loss pickle.

    The features vary by company and price, so I’d encourage you to explore the options below when making your decision. These are some of the most widely used options available:


  4. Bonus #4: Restoring From a Backup and Testing Recovery

    If you run a website for any number of years, the chances are you are going to have to restore from a backup at some point. Stuff happens.

    But, even if your site is running flawlessly and you never have experienced a data loss, you should still test restoring from a backup to make sure that your backup is actually working.

    To restore your site, you will need both the backup of the files and the database. Exactly how to restore your site by creating a “dev” or “staging” site will depend on your specific DNS and hosting setup, but here are the rough steps.

    1. Ideally, create a subdomain for your test site, like test.mysite.com or staging.mysite.com. If you can’t create a new subdomain, you can create a subfolder on your existing site like mysite.com/test/.
    2. Create a new database for the test site. Import your database backup.
    3. Upload the zip file of your files backup to the server and then unzip them.
    4. Edit the wp-config.php file in your test site to change the database name, username, and password and any other settings that might need to be updated.
    5. Edit your .htaccess if needed.
    6. If doing a test (vs an actual restore on the same domain) use a script like searchreplacedb2 to change instances of your domain in the database to the domain of the test site.

    Special Notes on Staging Sites with Paid Memberships Pro

    Please note that staging sites are still real websites that might interact with your customers directly or indirectly. Emails initiated on your test site will get sent to real email addresses. If you cancel a PMPro membership on the staging site, your members will get an email, and PMPro will try to cancel the subscription at the gateway and/or the user’s subscription to your mailing list at Mailchimp/etc.

    Additionally, plugins like Paid Memberships Pro perform certain actions like expirations and subscription synching every night as a “WP Cron” process. If you make an exact copy of your live site to a staging site, your staging site will also run these scripts at night. It is important to disable these services using something like our PMPro Toolkit addon or disable your staging site after testing (by deleting it or maybe adding break; to the top of your .htaccess file) to keep these scripts from running. The PMPro Toolkit addon specifically stops PMPro related scripts, but other plugins may still be running scripts of their own.

    Staging sites can also be an attack vector for malware and viruses if they are left online and not updated regularly like your main site. So be sure to either delete your staging site when you are finished with it, set up a plugin like Coming Soon Page & Maintenance Mode by SeedProd, or keep it up to date like any other WordPress site.


Now go make a backup! Then, design and initiate your backup process.

The easiest first step is to choose one of the methods above and create your first backup. Once you have done that you will get a feel for how the selected method works for you, your skill set, and your workflow. There is no one “right” answer here, just the very wrong answer of doing nothing at all.

I hope that the backup process you select on easily fits within your week-to-week (or day-to-day) business. Post a comment below if you have more to add or a questions about any of the methods outlined above.

How to enable debugging on your WordPress site.

Enable Debugging on Your WordPress SiteIs your site no longer working? Has your WordPress site been replaced with a blank white screen, the infamous White Screen of Death? Maybe you are experiencing styling issues, your footer is not loading correctly, or you are having a tough time checking out of your site. This is not unique to Paid Memberships Pro and can occur on any website, using any theme or any plugin(s). Knowing what is causing the problem can give you or a developer the relevant information needed to help fix these issues.

Whatever the reason, this article will explain how to enable debugging mode in WordPress to uncover any PHP errors or warning messages that are on your site.


Turning WP_DEBUG Mode on.

WP_DEBUG is a PHP constant (a permanent global variable) that can be used to trigger the “debug” mode throughout WordPress. It is assumed to be false by default and is usually set to true in the wp-config.php file on development copies of WordPress.”  WP DEBUG, WordPress Codex

  1. Before getting started you will need to be able to access your WordPress site files by means of an FTP Client or your website’s control panel.
  2. To turn WP_Debug mode on, navigate to your wp-config.php file (found in your WordPress install directory), edit the file using a text editor of your choice. Once the file is open, search for the following line of code define( 'WP_DEBUG', false ); and change the value from false to true. If you do not find the WP_DEBUG line of code in your wp-config.php file, you can simply add it toward the bottom of the file. It is usually placed below the table prefix, but certainly above the /* That's all, stop editing! Happy blogging. */ line.

With WP_DEBUG turned on, errors will be displayed right on your homepage, so your site may appear broken (or more broken). Copy the entire error message down to share with the support team or developer working on your site.

Fatal Error Example

To hide the errors again, change WP_DEBUG mode back to false. It is often acceptable to turn on WP_DEBUG, navigate to your site and copy the error, and finally navigate back to your wp-config.php file and turn off WP_DEBUG. When dealing with a live site, any visitors who were browsing your site would be interrupted by the error/message notification. It’s important to hide those errors again as quickly as possible or use the instructions below to send the errors to a log file that only you can see.


Turning off errors that would otherwise display on-screen.

By default, WP_DEBUG will display all errors and notification to your screen. This is not ideal in many cases as the notification/errors will replace the actual webpages of your site with the error messages. To stop errors and messages from displaying on your screen, you can add the following line of code to your wp-config.php file, just under the WP_DEBUG line: define( 'WP_DEBUG_DISPLAY', false )

With this constant set to false, errors are not displayed on screen but are still saved to your web server’s PHP error log. You can set a specific error log for WordPress errors using the steps below.


Making a Debug log file.

Along with WP_DEBUG, you can use WP_DEBUG_LOG , this will save all errors and notifications to a debug.log file that you can use as a reference of any errors/php notifications. You can also use this file to send to any developer or support engineer who is working on your site. In the event that there were no errors found, a debug.log file will not be created.

Simply add the following line of code to your wp-config.php file under the other WP_DEBUG constants: define( 'WP_DEBUG_LOG', true )

Accessing the Debug.log File

Once you have added the define( 'WP_DEBUG_DISPLAY', false ) line of code to your wp-config.php file , you will find the debug.log by navigating to your wp-content folder found in the WordPress install directory. You will need to access this part of your website by using a FTP client or through your websites control manager.

Important: Once done with your debug.log file, disable WP_DEBUG mode and delete the debug.log file from your site immediately. Not doing so may result in compromising the security of your site or exposing sensitive information to unwanted parties.

 


What it looks like all together.

Now that you have added all the lines of code to your wp-config.php file, you should have something similar to the below coding example:


WordPress Debugging – Summarized

  1. Login to your site via FTP or your host’s File Manager.
  2. Navigate to your WordPress install directory and enter it (usually public_html or www).
  3. Find the wp-config.php file and edit with a text editor of your choice. Some popular text editors to use are: Atom, Sublime 3 and PHPStorm
  4. Search the file for the following line of code: define( ‘WP_DEBUG’, false );
  5. Change this value from false to true. This will now output errors to your site by displaying them right on your homepage, so instead of your site you will see any underlying errors. To get your website back, change WP_DEBUG mode back to false.
  6. Directly below this you can enter two new lines of code to send errors to a log file:
    • define( ‘WP_DEBUG_DISPLAY’, false );
    • define( ‘WP_DEBUG_LOG’, true );
  7. Save your file and re-upload to the same directory – overwrite the file when prompted. (Do not close your FTP client just yet).
  8. Go back to your website using your browser and recreate the issue.
  9. Head back on over to your FTP client and navigate to wp-content and expand the folder, your debug.log file will be loaded into this directory if there are any PHP errors.
  10. Download the debug.log file. Feel free to send this log file onto your support engineer.
  11. For a more detailed guide on debugging in WordPress, have look at the WordPress codex.

This looks tough – I need help.

If you are uncomfortable editing your wp-config.php file or are otherwise having trouble following these instructions, reach out to your hosting company for help. You can ask them the following in a support ticket or through email:

Can you tell me how to find the PHP error log for my website at example.com and send me a list of the last 20 errors that have occurred?

Exactly how to access error logs varies depending on your host and server setup. Any good host should be able to respond to request above.

If you would like our help fixing a PMPro-related error on your site, we have a team of Support Engineers that are equipped to help you with your debugging questions. Feel free to get in touch with our team over on our Members Support Forum.

Access to Member Support Forums requires a PMPro Plus Account or higher.

View Membership Options