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

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” link takes you to a new page that specifically functions as a renewal/change page 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. 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.

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

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
  • paypal-express-confirm.php
  • register-single.php
  • register.php
  • subscription.php

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.

Ashley Gibson

About the author: Ashley is the development lead for Restrict Content Pro. When not working on Restrict Content Pro, she enjoys weightlifting and reading.

12 comments

  1. Most excellent! Thanks for all of the hard work!

    Brent

    ps. It looks like “per-download basis” maybe should be “per-discount basis”. Just an fyi : – )

  2. Any ability to restrict content per specific user? not just membership? Really been looking for functionality that does this in a membership plugin and yet to find.

    1. Hi James,

      Sorry but Restrict Content Pro doesn’t support restricting content to individual users. We don’t have any plans to add this feature at this time. It could be achieved fairly easily with custom code though. You’re welcome to reach out to one of our recommended consultants if you’re interested in getting this custom built: https://restrictcontentpro.com/consultants/

Comments are closed.