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:

Opt in to Restrict Content Pro 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”.

Multiple memberships setting in Restrict Content Pro

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.

Registering for a new membership

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.

List of existing memberships on registration form

Clicking the “Renew” or “Change” links take you to new pages that specifically function as renewal/change pages for that membership.

Membership renewal form

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.

Stripe Elements card form

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.

Membership CSV import form

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.

Column mapping in the membership CSV importer

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.

Admin notice about new Authorize.net add-on for RCP

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.

Limit a reminder email to certain membership levels only

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).

Configure a one-time discount code

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.

Ashley Gibson

About the author: Ashley is a developer, tester, and support team member at Restrict Content Pro. When not working on Restrict Content Pro, she enjoys weightlifting and reading.

5 comments

  1. Sweet!

    There ara several cool new features on this release.

    Besides the super-requested “Multiple memberships per customer” is also nice to see some improvements on the discounts and CLI integration.

    Good job.

    I’ll try to test it test it before the final version comes out.

  2. Great work, I can’t wait to start tomorrow to test multiple memberships, Thank you.

    Blerim L. || Web Developer at IKAF

Leave a Reply

Your email address will not be published. Required fields are marked *