This new version includes four main new features, performance enhancements, and other fixes and updates. 2.3 is a “minor” release and should be backwards compatible with sites running WooCommerce Subscriptions 2.0 and above.
In order to ensure a smooth update process, please refer to the Subscriptions Upgrade Guide.
Required WooCommerce Version
This version of WooCommerce Subscriptions requires WooCommerce version 2.6 or newer.
If your site is not running WooCommerce 2.6 or newer, please update WooCommerce before updating Subscriptions.
New Features
Charge full price at time of sign up for synchronized products
On the WooCommerce > Settings > Subscriptions screen, under the Synchronization heading there is an option to “Prorate First Renewal”. There is a new option in this dropdown that allows store managers to set their store to charge the full amount of the product at sign-up, no matter the date.
Create limited subscription payment coupons
When creating a coupon for recurring products, a field labeled “Active for x payments” will be displayed. The default will be blank, meaning that the coupon will be active for the duration of the subscription.
Filling in this field with a number will ensure that the coupon is only active for that number of payments, including the initial payment. Once the coupon has reached its limited number of payments, it will be automatically removed from the subscription.
For more information on limited coupons, see the Limited Subscription Payment Coupon guide.
Allow customers to renew early
On the customer’s View Subscription page, there will be a button labeled “Renew Now”. After pressing this button, customers will be taken through the checkout process to pay for their renewal immediately. Upon successfully completing the early renewal, the subscription’s next payment date will be pushed forward the appropriate amount of time.
For example, if a subscription renews monthly on the 5th and the next payment date is August 5th. On the 26th of July, if the customer decides to renew early, the next payment date will account for this renewal and be changed to September 5th.
For the renew now button to be displayed:
- the early renewal feature will need to be enabled from the WooCommerce > Settings > Subscriptions screen.
- the subscription will need to have an active status.
- the subscription will need a recurring price (excludes subscriptions which are free).
- there must be a next payment date.
- the payment gateway used to purchase the subscription must support subscription date changes.
- the subscription will need to not contain any synchronized products.
- the subscription must not currently be in a trial period, if one exists.
Link a subscription to a parent order
On the Edit Subscription screen, below the subscription status, there is now a field that lists the parent order number or an empty dropdown field.
If the field is empty, you may click on the dropdown in order to search for and choose an order to become the parent order for the subscription. While searching, only orders which belong to the subscription customer will be listed. The orders are listed by number.
A pending parent order can also be created from a subscription. An invoice for this order could then be sent to a customer, which will activate the subscription when paid.
In the “Subscription actions” box on the right side of the Edit Subscription screen, there is an option in the dropdown to “Create pending parent order.”
Performance
Subscriptions strives to meet the needs of a broad range of businesses, including those who grow to large scales. These performance changes reduce the potential for growing pains and improves Subscriptions for everyone.
A persistent cache of subscription related order IDs
When retrieving a list of related orders for a subscription, there sometimes has to be a query to the database to get these related orders. This can be slow, especially on large sites. Subscriptions 2.3 adds a persistent cache of related orders that updates without having to query the raw data to avoid this performance bottleneck.
A persistent cache of customer subscriptions
Similar to the above, running a query to find a customer’s subscriptions can be slow, especially on large-scale sites. By creating a persistent cache of a customer’s subscriptions, performance is improved for retrieving a list of customer subscriptions.
Update Action Scheduler
Action Scheduler is a library used by Subscriptions to run actions at certain times. Many updates have been made to Action Scheduler, especially to enhance performance on a large scale. Action Scheduler 2.0 will be included as part of Subscriptions 2.3
Boost performance of admin subscription search
When searching subscriptions from the admin screen, the billing and shipping addresses are included in the fields searched. Prior to WooCommerce 3.0, these fields were many and separate.
The billing and shipping addresses have since had a field added that is a combination of the other fields to allow for better search performance. WooCommerce Subscriptions 2.3 takes advantage of those fields to improve admin subscription search performance.
But wait there’s more!
- Repair subscriptions that have been suspended in PayPal but not in WooCommerce. This problem persisted from Subscriptions version 2.1.4 until version 2.2.8, when this bug was fixed. While the root issue was fixed, the already affected subscriptions would still be out of sync with PayPal. This script will align the WooCommerce subscription statuses with the PayPal statuses.
- Remove one-time fees from renewals. This especially applies in cases when fees are added by third parties.
- Improve subscription report accuracy by excluding trashed subscriptions from report calculations.
- When a recurring coupon type is applied to a cart which only contains synced subscription products or products with a free trial, hide the coupon in the initial cart since it doesn’t apply any perceivable discount.
- Only allow switching between products which are visible to the customer.
- Improved the performance of getting a variable subscription product’s min and max price data. This should reduce the time it takes to load shop product archive pages.
- We’ve added new sections to the system status including an overview of the site’s subscriptions statuses, whether the store has been connected to a WooCommerce account, whether the site has custom retry rules, and a payment gateways section.
For Developers
- Ensure pre-WooCommerce 3.0 subscriptions have billing and shipping address indexes.
- Change
created_via
meta on renewal orders to remove possible conflict between hold stock setting and retry system order cancellation. - Add
$cart
and$order
arguments towoocommerce_checkout_create_subscription
filter. - Remove TLC transients library and cache manager in favor of using WordPress transients.
- Refactor code for date columns on subscriptions table.
- Requires PHP 5.6 or newer.
- Add a filter to allow third-parties to filter orders by custom order types.
- Add filter to control automatic single subscription redirect on customer account page.
- Deprecated the
wcs_pre_get_users_subscriptions
filter.
For a complete list of the changes coming in 2.3, see the changelog.