Version 22.214.171.124 of Paid Memberships Pro is out with a handful of bug fixes. Braintree users in particular will need to update if they are running 1.9.4. There is also fix to the Recaptcha code and an enhancement to the cancelation error email.
Today’s web user has certain expectations about your site’s “Log In” links. This post covers a few methods to add these links to the expected location on your website. Use one of the options below to add a conditional “log in” link to a Menu in the WordPress Appearance > Menus admin page.
This plugin (available in the WordPress plugins repo) is the most simple option. After activating, you will see a new section titled “Login/Logout links v1.3.2” in the Appearance > Menus area of your admin. Simply click to add the Log In|Log Out link to a menu, save the menu and you’re done.
In addition to a conditional menu link, we recommend this plugin (also available in the WordPress plugin repo) for many other reasons, including a themed (frontend) login, password recovery, and user profile section.
After activating the plugin, navigate to the Appearance > Menus area of your admin. Under the “Pages” section in the left column, you’ll see a page titled “Log In”. Add this page to your menu. The link will automatically swap between “Log In” and “Log Out” based on the session.
Theme My Login also has advanced logic for blocking the WordPress backend by “role”, as well as redirection on login based on “role”. If you need to redirect members on login based on membership level, see this blog post by Jason.
The Memberlite Theme has a built in log in / log out menu area in the upper right area of your WordPress site. You can enable this feature on the Appearance > Customize > Memberlite Options screen in the WordPress admin. Check the option to “Show Login/Member Info in Header”.
If the user is logged in and Paid Memberships Pro is active, the member will see their display name linked to the ‘Membership Account’ page, alternately they will see their display name linked to the ‘Edit Profile’ page.
You can add a members menu to this area under ‘Appearance’ > ‘Menus’ screen in the WordPress Admin. Read more about Memberlite menu options here.
Custom Code the Menu In Your Theme or via a Custom Filter
If you’re comfortable with editing your theme, you can add the login/logout link anywhere you would like via this function:
<?php wp_loginout(); ?>
The function has two parameters:
<?php wp_loginout( $redirect, $echo ); ?>
(optional) URL to redirect to on login/logout.
(optional) If true, echos the link, if false, returns the link as a string. (default: true)
Version 1.9.4 of Paid Memberships Pro is being pushed out shortly. This update includes fixes that could impact sales, and we recommend everyone upgrade as soon as possible. There are two updates in particular to look out for related to our Stripe integration as well as new frontend layouts for improved display across devices.
The included Stripe PHP Library has been updated to the latest version.
While not necessary, after upgrading it is a good idea to log into Stripe to change your API settings to use the latest version of the Stripe API. To do this log into Stripe, click on API in the left sidebar, then click on “Upgrade Available” and follow the directions.
If you don’t see the “Upgrade Available” link, then you are already running on the latest version of the Stripe API. Be sure to test checkouts on your site after making this change. For 72 hours, you’ll be able to roll back to the previous version of the Stripe API if needed.
“Table-free” Frontend Pages for Improved Display on All Devices
In an effort to improve the display and responsive layout of default plugin pages, v1.9.4 of Paid Memberships Pro has migrated to a “table-free” layout for selected frontend pages. Affected pages include those pages using the following shortcodes: [pmpro_checkout], [pmpro_confirmation], and [pmpro_billing]. These pages have been updated to use a div-based HTML layout where possible instead of a table-based layout.
We’ve done our best to make sure this update has minimal impact on all of our users, but if you notice UI issues after performing the update (in particular users with custom checkout templates or CSS styling might be affected), you can use the Table Layout Add On to revert to the table-based layout on your site. Note that if you roll back PMPro entirely, you will lose the benefit of the 30+ other fixes and enhancements included in this update. So using the table pages add on the preferred way to fix any UI issues that come up.
It is also important to note that this add on is meant as a temporary solution while you update your site to make use of the new div-based layout. We will support the plugin for about a year. During that time, be sure to reach out to use with any issues caused by our add ons and code and take time to update your own customizations to work with the new layout.
Add Ons Updated to be “Table-free” and for 1.9.4 Compatibility
Many of our Add Ons have also been updated to use the new div-based layout or other bug fixes included in this update. Those add ons will have updates available as well, so be sure to update all of your PMPro Add Ons with update notices before you update the core Paid Memberships Pro plugin.
In terms of number of fixes and enhancements, this is one of our largest updates ever. The full list of updates is below.
BUG FIX: Fixed issue where PayPal was not working for amounts over $1000.
BUG FIX: Non-decimal currencies now handled correctly with Stripe.
BUG FIX: Fixed issue where updating a Stripe subscription from the edit user page could cancel the subscription once the webhook fired.
BUG FIX: Fixed issue where “admin_cancelled” memberships weren’t being calculated correctly in membership reports.
BUG FIX: Fixed issue where users could not drag and drop to change the order of membership levels.
BUG FIX:pmpro_getMembershipLevelsForUser() would sometimes return duplicate levels in the array if the user had multiple active entries in the pmpro_memberships_users table.
BUG FIX: Updated includes/metaboxes.php to call pmpro_getAllLevels() instead of relying on the $membership_levels global which is problematic.
BUG FIX: Fixed a few strings that weren’t wrapped for translation or were using the old text domain.
BUG FIX: Fixed redirect error that occured when the levels page was not set.
BUG FIX: Updated getfile.php to support file names with urlencoded characters (e.g. spaces) in them. (Thanks, florent from PMPro blog)
BUG FIX: Fixed notice when use the getfile.php script due to using add_filter instead of apply_filters in the mimetype class.
BUG FIX: Fixed the all time views column for the logins report.
BUG FIX: Fixed fatal error on the logins report, member shortcode and other issues when using PHP7.1+.
BUG FIX: Fixed issue with saving arrays using pmpro_setOption()
up the lines of text.
BUG FIX: Fixed typo in the string “Are you sure you want to do that? Try again.”
BUG FIX: Fixed a few strings that used the wrong text domain or weren’t wrapped correclty for translation.
BUG FIX/ENHANCEMENT: Now bundling Google’s jsapi.js file for use in the reports.
BUG FIX/ENHANCEMENT: Fixed issue where some emails (e.g. the password reset email) would not have wpautop applied to them, crunching
BUG FIX/ENHANCEMENT: Better checking for Theme My Login compatibility when handling login redirects.
BUG FIX/ENHANCEMENT: Better error handling for Braintree.
BUG FIX/ENHANCEMENT: Membership stats widget now shows first 3 levels based on level order.
BUG FIX/ENHANCEMENT: Added the pmpro_member_shortcode_access filter
ENHANCEMENT: Updated the Stripe PHP library to version 5.2.2 and updated Stripe to use the latest version of their API, 2017-08-15.
ENHANCEMENT: Changed frontend pages (e.g. checkout.php) to use a div-based layout instead of tables. Important information here if you are using custom page templates or notice UI issues after upgrading
ENHANCEMENT: Added pagination to the discount codes page in the admin. Also sorting codes in descending order by ID. Use the pmpro_discount_codes_per_page filter to change the per page limit from 15.
ENHANCEMENT: Updated plugin admin pages with better links to documentation and support.
ENHANCEMENT: Updated plugin frontend pages checkout, billing, confirmation, and single invoice to remove most table based layouts.
ENHANCEMENT: Better error message if trying to checkout using an existing user’s email address.
ENHANCEMENT: Added the pmpro_report_levels filter to let users change levels and order of levels for the memberships.php report.
ENHANCEMENT: Updated video and copy for readme.txt.
ENHANCEMENT: Added user display name to Memberlist search query
ENHANCEMENT: Added Russian Ruble as a currency.
ENHANCEMENT: Changed the dated term “CVV” to “Security Code (CVC)” when shown on the frontend.
ENHANCEMENT: Added .doc and .docx to the mimetype class.
ENHANCEMENT: Added Portuguese language files. (Thanks, Secundino Correia)
ENHANCEMENT: Updated plugin admin pages with better links to documentation and support.
How you name your membership levels is one of the most important components for conversions on your membership on site.
Let’s spend some time thinking about membership level names. We’ll cover the classic membership site structures and provide examples for naming the membership levels or subscription options for each case. (And there’s even a nifty “level name” playground that tests your name within various plugin-generated phrases.)
Take a step back and evaluate your membership level names.
I work with thousands of membership sites and have seen a lack of clarity (and creativity) in this key area. The membership level name identifies what the member is receiving in exchange for their membership fee. In some cases, the name is a badge of pride for your members, turning them from the anonymous “visitor” to a member of the “in-crowd”.
Putting all of this touchy-feely stuff aside, the level name is also used in various default “phrases” within your membership site system. You need to make sure your level name “reads well” within these phrases. I’ve created a simple tool at the end of this article that provides a litmus test for your level names within the key system phrases in Paid Memberships Pro.
Mainly for non-profits with creative membership level tiers.
This flavor of membership site offers more (or fewer) features based on membership level. This is the structure of our own site here at Paid Memberships Pro. We offer a Free, Core and Plus level. I think the level names are OK, and they do imply a tier (Unlimited being the highest membership option available).
Here are some level name ideas based on the “tier”
Mama Bear (just right!)
Price/Payment Term Structured Levels
Use this level naming structure when all membership levels offer the same package of features, but vary based on price or term. First, try to think of something clever based on your specific name, brand or site topic.
If your membership site was a sports team, what would you call your fans?
You can give membership an overall brand, such as “Trekkies”, “Bronies”, or “Cheeseheads”. Then use your level names to clarify the price or payment term.
You may still have an idea of “tier” in this structure, such as a Foodie Box site that offers 3 Month, 6 Month, and Annual subscriptions, with the option to “add on” a dessert box. For this case, I’d suggest reading through my post on price-adjusting Register Helper fields to have a selection at checkout modify the level price. Easy as pie.
Here are some level name ideas based on the price/term
* Note that not all integrated gateways offer “daily” subscriptions.
Content Vertical/Category-specific Levels
In this type of membership site, the membership levels differ not by features, but by type of content or “vertical”. This is common in a stock or investing site, nationwide membership chapters site, or an online dating site where identifying the member’s “interest” is handled via the membership level selected.
Here are some level name ideas based on the content vertical
Stock/Investing Sites: Technology Sector, Gas and Oil, Retail, Pharmaceuticals
Member Chapter Sites: Country Name, State Name, County Name
Online Dating Sites: Man Seeking Woman, Woman Seeking Man, Man Seeking Man, Woman Seeking Woman, etc.
User or Member-type Levels
This is a category of membership site where the member receives a different level/price/package based on the type of member they are. Check out our Sponsored/Group Members Add On if you have a membership level that offers parent/child account relationships.
Here are some level name ideas based on the user/member-type
Military: Active Duty and Veterans
Content Delivery/Subscription Type Levels
For this type of membership site, the levels differ by how the content is received. It will make more sense after reading the level names below, but basically this case is used when the content is offered in various formats (online, print, email), and the selected level determines the members’ preferred method(s) of content delivery.
For this case, you could use the same membership branding concepts covered in the Price/Payment Term Structured Levels section above, then use the level names to clarify content delivery.
Here are some level name ideas based on the type of content delivery
Online and Print
Sponsorship Level/Benefactor Tiers
If you’re a non-profit organization, you most likely think about membership a bit differently than most other site types. In your case, membership level is actually sponsorship level, and you have a chance to get really creative in how you name your tiers.
A great approach to level naming is to pull ideas from the goals of your organization, your location, the group or cause you represent.
Instead of coming up with my own examples, I’ve compiled a few non-profits and their benefactor/membership tier names below:
I hope this post has given you some direction as you brainstorm level names for your new or existing membership site. If you have a type of membership site that wasn’t covered, post a comment below so we can discuss some level naming conventions for your site.
If you run an existing membership site, you can still rename your membership levels. With Paid Memberships Pro you can simply update the level names under Memberships > Edit Level in the admin. Every member that currently has that membership level will automatically have their membership level name updated.
Time to Play
The Membership Level Names Playground below allows you to enter a desired membership level name and see how it will “read” within various plugin-generated phrases. These are the most common phrases your members will see, both on your site and in membership-related emails.
Test your level name against key phrases in Paid Memberships Pro.
Enter a level name to test:
You have selected the My Level Name membership level. Shown on the membership checkout page.
Membership Level: My Level Name Shown in most member communication emails and invoices.
Your My Level Name membership is now active. Shown on the membership confirmation page.
If you have a level name that doesn’t pass the litmus test, don’t fret. Every phrase in Paid Memberships Pro can be “translated”, and I’m not just talking about languages.
Depending on your membership site, you may need to use these methods or another approach. Just open a topic in our members forum (provided to PMPro Plus and Unlimited members), and we will help you work out any hiccups between your desired membership level name and the built in phrases of Paid Memberships Pro.
We have just pushed out v2.1 of the MailChimp Integration Add On. This update fixes a lot of bugs, but one of those in particular would have stopped users from being subscribed to MailChimp lists after checkout or registration.
If you suspect that you’ve missed some list signups due to this bug, you can use the export CSV feature of the plugin to generate files to import your members into MailChimp.
When you import the CSVs, it will not duplicate users already on your lists and will not subscribe anyone who has since unsubscribed through MailChimp.
We have a guide for exporting subscriber lists by membership level and importing them into MailChimp.
The Approvals Add On allows you to set up a unique approval or application process for your membership site. After a member signs up, the admin will have the ability to approve their membership or deny the application.
The diagram below explains how approval fits into the standard membership checkout process.
How it Works
Using the add on, you can set your membership levels to require approval with a few options. Not only can you set a level to require approval, you can also set a level to require an approved membership from another level in order to complete checkout.
This allows you to offer a two-step membership application and full membership registration model. You can place an application fee on the application level, and then charge your full recurring membership fee on the primary membership for approved members. Extend your site further by using fields add via the Register Helper Add On to gather member information that will help you decide whether to approve or deny the membership.
Version 1.9.1 of Paid Memberships Pro is out with a handful of bug fixes and some tweaks to our license nag. This fix in particular will help on sites that had multiple plugins using the Stripe API library.
Concerning Our License Prompts
The tweaks to our “license nag” (as we’ve named it) deserve a bit of explanation. Almost two years ago we launched our PMPro Plus membership here on the site, which includes access to our paid support forums but also allows you to use the WordPress dashboard to automatically update the plugins that we host on our own servers.
Since then, we’ve been selling PMPro Plus licenses on the site here, but we weren’t actually requiring a valid license to update the Plus addons.
There were relatively few people taking advantage of the lack of checks on our update server, so we didn’t bother to turn on the check. Now however, there are quite a few sites running PMPro with Plus licenses that try to update against our servers without valid licenses. We enabled the license check in v1.9 to encourage those sites to purchase a license (or alternatively download zip files from GitHub to update their addons).
We also added a “license nag” that pops up once a week in the WP dashboard if you don’t have a PMPro license key set. Our intention for this nag is to kindly suggest that sites using PMPro on a production site purchase a support license. These support licenses pay us to support our customers, but they also support the PMPro platform in general by giving us cashflow to pay our developers/etc. I know that as a user of open source software myself, often times the decision of which projects I support and which I don’t comes down to simply whether or not I was asked for support.
We are still committed to PMPro as an open source project first and foremost.
All of our code is GPLv2 and available for free on WordPress.org or GitHub.com. At the same time, we want to encourage users who are willing to pay to purchase licenses to help support themselves and the platform.
It’s hard to strike a balance between asking nicely and being annoying. We’re not there yet. The v1.9 update was both unclear and aggressive in how the license notification worked. We’ll continue to monitor things and consider other changes (maybe making it less than once per week for sites without a license), but in v1.9.1 we have made a couple of changes to the license nag:
On new installs, we will wait 1 week before showing the nag at all. This gives new users time to discover our website on their own or to try out the plugin and deactivate it if they aren’t using it. We didn’t mean for the license notification to be so “in your face” when the plugin was activated.
The “Invalid Key” message is no longer showing if you haven’t even tried to enter a key. The error message is also yellow vs. red to note it as a warning vs. an error.
We’re also working on updates to our pricing page and documentation on the site here to make it more clear who should purchase which license.