Today we are happy to announce the final release of Restrict Content Pro version 3.1, which finally includes support for multiple memberships per customer! We know how long some of you have been waiting for this feature and we are thrilled to be able to deliver it to you today.
Other notable features include Stripe Elements, a new CSV import tool, WP-CLI integration, a new and improved Authorize.net add-on, the ability to limit reminder emails to certain membership levels, the ability to specify one-time discount codes on a per-code basis, and more!
Multiple memberships per customer
By default, the ability to hold multiple memberships is disabled. So unless you adjust your settings, everything will continue to function the same way it does now. Members can renew, upgrade, and downgrade their memberships, but not hold more than one.
To enable multiple memberships, navigate to Restrict → Settings → General and check on “Multiple Memberships”.
How does this setting affect the [register_form] shortcode?
When multiple memberships is activated, the [register_form] shortcode will default to handling new membership signups. This is conveyed through a clear notice at the top of the page.
Clicking the link expands a list of the customer’s current memberships, along with links to renew or change those memberships (if available) instead of signing up for a new one.
Clicking the “Renew” or “Change” link takes you to a new page that specifically functions as a renewal/change page for that membership.
Which add-ons are compatible with multiple memberships?
All add-ons have been updated to be compatible with multiple memberships, except for the Group Accounts add-on. Group Accounts is compatible with the 3.1 release, but it does not yet work with multiple memberships and multiple groups. A single customer can still only own or be part of one group. We are currently working on Group Accounts version 2.0, which adds support for multiple groups. We expect to have a 2.0 beta release soon.
Stripe gateway now uses Stripe Elements
Our Stripe gateway has been updated to use Stripe Elements. Stripe Elements provides a more secure checkout process by collecting payment details via an iframe instead of using form fields directly on your site. This allows you to qualify for the easiest form of PCI compliance because card data never passes through your server.
When upgrading to 3.1 you will see a more compact card form for Stripe.
New CSV import tool for memberships
Previously, our CSV importer has been in a separate add-on. As of 3.1, it has been moved directly into the core plugin. It can be found under Restrict → Tools → Import.
At first glance, the form looks much the same as the old add-on.
But after configuring the form and clicking “Upload CSV”, you are given the option to map your CSV column headers to RCP’s expected fields and you will see a preview of the captured data. This removes the need to have very specific column names. Now, your column headers can be anything you like.
After clicking “Process Import” you will be redirected to the batch processing page, which will auto start the import. Our new CSV importer uses our batch processing API, which allows data to be processed in chunks. This greatly improves larger imports that may have thousands of rows. Our batch processing API also has better error handling and you will see a list of any failed rows at the end of your import.
Restrict Content Pro now integrates with WP-CLI. The following commands are supported:
- wp rcp batch – Complete batch processing jobs.
- wp rcp customers – View information about customers.
- wp rcp memberships – Create memberships in bulk and view membership details.
- wp rcp delete_generated_data – Deletes all data generated through CLI.
For more information you can read our documentation about WP-CLI integration.
Authorize.net has been moved to its own add-on
The Authorize.net gateway has been removed from Restrict Content Pro core and moved into a separate add-on plugin. This add-on can be installed from the WordPress.org repository via Plugins → Add New. If you currently have the Authorize.net gateway enabled you will get a notice in the admin panel prompting you to install this new add-on.
The gateway was removed because the SDK had poor compatibility with Windows servers. This was causing problems for Restrict Content Pro customers wanting to install the plugin, even if they weren’t using the Authorize.net gateway.
In the process of moving Authorize.net to a separate add-on we’ve made a few changes and improvements, including:
- The gateway now uses webhooks instead of Silent Post URL. Please follow the instructions to set up a webhook and configure your signature key.
- The gateway now uses SHA2 instead of MD5 for the transHash.
- Once the payment for a subscription has been received, the authorization is voided. This helps prevent confusion for what looks like a duplicate transaction.
Limit reminder emails to certain membership levels
Expiration and renewal reminders can now be limited to certain membership levels only. This allows you to change the email contents based on which membership level the email is being sent for.
Specify one-time discounts on a per-discount basis
Previously, the discount code settings were global: either all discount codes were recurring, or all discount codes were one-time only. This global setting has been removed, and now you can configure it on a per-discount basis.
After upgrading, all your discounts will have been updated to use what was previously your global setting. But if you edit one of your discount codes you’ll see a new setting for “One Time”. This allows you to change whether the discount is only applied to the first payment (checked on state), or if it’s applied to all payments (checked off state).
- All admin tables now use the WP_List_Table class. This adds for more consistent display and better bulk action support.
- Signup fees are now only applied on initial signup; they are not applied when a customer manually renews their membership.
- Membership level meta and payment meta functions have been added: rcp_add_membership_level_meta(), rcp_add_payment_meta(), etc.
- Added the ability to bulk assign existing users to new membership levels (on the Users → All Users screen).
- All payment events are now logged in membership and customer notes.
- Added default email templates on fresh installs.
- Added a “Payment Received” email template for admins.
- The customer name is now sent to the Stripe gateway when creating a customer record.
Notable bug fixes
- When processing a gateway webhook, ensure the payment is relevant to RCP before recording it. As an example, this prevents unrelated PayPal payments made by the same user from affecting their RCP membership.
- “Auto renew” is no longer unchecked when a membership expires.
- Reduce the three RCP columns on the “Users” table to one single “Membership” column. This prevents RCP queries from running multiple times per customer and helps provide better clarity with multiple memberships.
- Prevent RCP’s datepicker styles from affecting other plugin datepickers.
The following templates have been edited. If you’ve overridden these, please compare our changes to ensure your files continue to work as expected.
Upgrade to version 3.1
Version 3.1 is available today. The update can be installed directly from the Plugins page for all customers with a valid license. Do not have a license yet or need to renew a license? Head over to the pricing page to purchase one or to your account page to renew an existing license.