Version 3.1 beta released
The most long awaited Restrict Content Pro feature is finally here: multiple memberships per customer! This feature has been requested for an incredibly long time, and we’re absolutely thrilled to finally deliver it. But in addition to multiple memberships, we also have a bunch of other exciting features for you!
How to test the beta
In order to help ensure the final release of 3.1 goes as smoothly as possible, we need your help testing this beta version.
Testing the beta is very simple. Simply log into your testing site that has Restrict Content Pro installed and activated and navigate to Restrict → Settings → Misc and check the box for Opt into beta versions:
The beta update will now be available as a standard WordPress plugin update from your Plugins page, though it could take up to a few hours for the notification to appear.
See our FAQ if you have any questions or issues updating to the beta version. If you encounter any bugs, please let us know through our support page.
Note: we do not recommend you test the beta on a live site. Use a testing site. While we do our very best to not cause issues during updates, sometimes issues do slip through unnoticed, so having a staging / testing site is very important.
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” links take you to new pages that specifically function as renewal/change pages 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 and the bbPress add-on. Both are compatible with the 3.1 release, but do not yet work with multiple memberships. A bbPress update is expected later this week or next, and we are working on a large update to Group Accounts in order to accommodate the ability to both own and be a member of multiple groups.
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.
WP-CLI integration
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-download 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).
Additional improvements
- 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.
Modified templates
The following templates have been edited. If you’ve overridden these, please compare our changes to ensure your files continue to work as expected.
- card-update-form.php
- register-single.php
- register.php
- subscription.php
Release date for 3.1
The beta version of 3.1 is available today and we hope to release the final version on or near the 17th of July.