0% found this document useful (0 votes)
44 views75 pages

Change Log

Uploaded by

George
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views75 pages

Change Log

Uploaded by

George
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

*** Woo Subscriptions Changelog ***

2023-12-21 - version 5.8.0


* Fix: Incorrect switch calculation when upgrading a synchronised product before
the first renewal is due where the initial payment was prorated.
* Fix: When updating a subscription via the REST API, don't update the start date
to the current time if the start date is not set in the request.
* Fix: When using the checkout block to pay for renewal orders, ensure the order's
cart hash is updated to make sure the existing order can be used.
* Fix: Prevents a PHP fatal error that occurs when the cart contains a renewal
order item that no longer exists.
* Fix: When HPOS is enabled and data compatibility mode is turned on, make sure
subscription date changes made to postmeta are synced to orders_meta table.
* Fix: Resolved an issue that would cause undefined $current_page, $max_num_pages,
and $paginate variable errors when viewing a page with the subscriptions-shortcode.
* Dev: Update subscriptions-core to 6.6.0.

2023-11-09 - version 5.7.0


* Add: Introduce a new REST API endpoint to create subscription(s) from a given
order. This endpoint is available at POST `/wc/v3/orders/{order_id}/subscriptions`
and accepts a single order ID.
* Add: When a customer toggles automatic renewals on or off via their My Account
page, add a note to the subscription to record that event.
* Fix: Set and update a subscription's trial end date via the REST API.
* Fix: Ensure the `woocommerce_subscription_renewal_payment_complete` hook is
always triggered when processing early renewals via the checkout page (introduced
in 5.6.0).
* Fix: When a subscription is flagged as requiring manual payments, allow admin
users to turn on automatic payments for a subscription via the Edit Subscription
page by selecting a new payment method.
* Fix: When processing an early renewal order, make sure the suspension count is
reset back to 0 on payment complete.
* Fix: Ensure proper backfilling of subscription metadata (i.e. dates and cache) to
the postmeta table when HPOS is enabled and compatibility mode (data syncing) is
turned on.
* Fix: Fetch and update the `_cancelled_email_sent` meta in a HPOS compatibile way.
* Dev: Introduce a new wcs_get_subscription_grouping_key() function to generate a
unique key for a subscription based on its billing schedule. This function uses the
existing recurring cart key concept.
* Dev: Deprecate the WC_Subscriptions_Synchroniser::add_to_recurring_cart_key().
Use WC_Subscriptions_Synchroniser::add_to_recurring_product_grouping_key() instead.
* Dev: Update subscriptions-core to 6.5.0.

2023-10-18 - version 5.6.0


* Add: Introduce the "Subscription Relationship" column under the Orders list admin
page when HPOS is enabled.
* Add: Use admin theme color and the correct WooCommerce colors.
* Fix: Resolved an issue that caused subscriptions to go on-hold when a customer
fails or abandons an early renewal order payment.
* Fix: Resolved an issue that caused subscriptions with an unpaid early renewal
order to be incorrectly considered as needing payment.
* Fix: When HPOS is enabled, make the orders_by_type_query filter box work in the
WooCommerce orders screen.
* Fix: Ensure renewal orders paid via the Block Checkout are correctly linked to
their subscription.
* Fix: Resolved an issue that caused paying for failed/pending parent orders that
include Product Add-ons to not calculate the correct total.
* Fix: Ensure the order needs processing transient is deleted when a subscription
order (eg renewal) is created. Fixes issues with renewal orders going straight to a
completed status.
* Fix: Store the correct subscription start date in postmeta and ordermeta when
HPOS and data syncing is being used.
* Fix: When HPOS is enabled, deleting a customer will now delete their
subscriptions.
* Fix: Missing styles on the Edit Subscription page when HPOS is enabled.
* Fix: Resolve an issue that would cause additional subscriptions to be created
when completing a switch via the Block Checkout.
* Fix: Resolve an issue that would cause 3rd party plugin edit product fields with
the show_if_variable-subscription class to be incorrectly hidden.
* Fix: Allow gateways to execute action on payment method deletion before updating
the subscription.
* Fix: Ensure subscriptions have a date created that correctly accounts for the
site's timezone. Fixes issues with subscriptions having a date created double the
site's UTC offset.
* Fix: When HPOS is enabled, fix quick-editing the subscription statuses on the
admin list table.
* Dev: PHP 8.2: Fix "Creation of dynamic property" warnings.
* Dev: PHP 8.2: Fix "Automatic conversion of false to array is deprecated"
warnings.
* Dev: PHP warnings from using debug_backtrace().
* Dev: Updated subscriptions-core to 6.4.0
* Dev: Updated the hooks for Checkout Blocks, replacing the deprecated
`woocommerce_blocks_checkout_` prefixed hooks with
`woocommerce_store_api_checkout`.

2023-09-21 - version 5.5.0


* Tweak - Use admin theme color in selectors.
* Tweak - Change plugin name to Woo Subscriptions.

2023-08-11 - version 5.4.0


* Add: Introduce an updated empty state screen for the WooCommerce > Subscriptions
list table.
* Fix: Ensure subscription checkout and cart block integrations are loaded on store
environments where WooPayments is not enabled.
* Fix: Ensure the shipping phone number field is copied to subscriptions and their
orders when copying address meta.
* Update: When HPOS is disabled, fetch subscriptions by customer_id using the
user's subscription cache to improve performance.
* Dev: Deprecated the 'woocommerce_subscriptions_not_found_label' filter.
* Dev: Updated subscriptions-core to 6.2.0

2023-07-26 - version 5.3.1


* Fix: Resolved an issue that prevented the "Used for variations" checkbox to not
be enabled on the edit product page load causing variations to be deleted
erroneously.
* Dev: Fixed wcs_get_subscription_orders() returning an empty list when querying
parent orders when HPOS is enabled with data syncing off.
* Dev: Use the WC_VERSION constant when determining the active WooCommerce version
inside our dependency manager if it's defined.
* Dev: Updated subscriptions-core to 6.1.0

2023-07-19 - version 5.3.0


* Fix: Ensure when a customer changes the shipping method on cart and checkout that
the recurring totals correctly reflect the chosen method.
* Fix: Resolve an issue that prevented the "Used for variations" checkbox from
being enabled on the variable subscription product edit screen on WC version
v7.9.0.
* Fix: When HPOS is enabled, the `wc/v3/subscriptions` REST API endpoint will now
fetch subscriptions of all statuses.
* Dev: Filter the WC_Order_Query args to properly query subscription statuses when
HPOS is enabled.
* Dev: Updated subscriptions-core to 6.0.0

2023-07-05 - version 5.2.0


* Fix: Resolved an issue that prevented the selected Shipping Method from being
saved when switching an assembled Product Bundle.
* Fix: When HPOS is enabled, permanently deleting a subscription related order
wasn't updating the related orders cache properly.
* Fix: Added logic to check if the recurring cart array is present before
displaying the recurring totals section in the cart.
* Dev: Updated subscriptions-core to 5.8.0

2023-06-05 - version 5.1.3


* Fix: Resolved an issue with customers being redirected to an incorrect Pay for
Order URL after login.
* Dev: Updated subscriptions-core to 5.7.2

2023-05-11 - version 5.1.2


* Fix: Resolve errors for third-party code using the URLs returned from
WC_Subscriptions_Admin::add_subscription_url() and
WCS_Cart_Renewal::get_checkout_payment_url() because they were erroneously escaped.
#4526
* Dev: Enable third-party code to alter the delete payment token URL returned from
flag_subscription_payment_token_deletions. #4526
* Dev: Update subscriptions-core to 5.7.1. #4526

2023-05-05 - version 5.1.1


* Fix: Error when third-party extensions use the
`woocommerce_subscriptions_add_switch_query_args` filter. #4522

2023-05-04 - version 5.1.0


* Fix: Correctly determine subscription free shipping eligibility when the initial
payment cart isn't eligible. Fixes erroneous "Invalid recurring shipping method"
errors on checkout. #4513
* Fix: Fatal error from third-party extensions using the `woocommerce_update_order`
expecting the second parameter. #4519
* Dev: Fixed precision loss notice that occurs when running PHP 8.1. #4513
* Dev: Fix phpcs and semgrep warnings to improve code quality. #4513 #4514
* Dev: Use `wp_safe_redirect()` when processing a payment method change request.
#4513
* Dev: Update subscriptions-core to 5.7.0. #4519
* Dev: Pass the subscription object as the second parameter to
`woocommerce_update_subscription` hook (and `woocommerce_update_order` for
backwards compatibility). #4519
* Dev: Return a response from the WC_Subscription::set_status() function in line
with the parent WC_Order::set_status() function. #4519
* Dev: Add the 'wcs_recurring_shipping_package_rates_match_standard_rates' filter
to enable third-parties to override whether the subscription packages match during
checkout validation. #4519

2023-03-31 - version 5.0.1


* Fix: WooCommerce dependency check was erroneously failing on stores with other
plugins including a woocommerce.php file. #4497

2023-03-10 - version 5.0.0


* Fix: When a customer changes their address during a subscription switch, don't
save their new address in the postmeta table when HPOS is enabled. #4489
* Fix: When HPOS is enabled, changing your address while paying for a renewal order
will update the address on the subscription. #4491
* Fix: Prevent admin error notices being shown for the "subscription trial end"
event that was caused by no callbacks being attached to this scheduled action.
#4491
* Fix: Prevent fatal error when copying the `_shipping_address` meta data where the
value is not an array. #4495
* Update: Use the WC installed version to determine if Subscription dependencies
are met rather than the database version.
* Dev: Update subscriptions-core to 5.5.0. #4491

2023-02-22 - version 4.9.1


* Fix: Revert minimum required version of WooCommerce to 6.5 due to fatal errors on
some sites.

2023-02-22 - version 4.9.0


* Add: Declare WooCommerce Subscriptions compatible with High-Performance Order
Storage.
* Dev: Update subscriptions-core to 5.4.0.
* Dev: Remove the recurring shipping method cache that caused bugs for third-party
plugins like Conditional Shipping and Payments.
* Dev: Bump minimum required version of WooCommerce to 7.0.

2023-02-01 - version 4.8.1


* Fix: Fatal error when loading the Edit Subscription page with custom admin
billing or shipping fields.
* Dev: Update subscriptions-core to 5.3.1.

2023-01-30 - version 4.8.0


* Add: Highlight subscriptions with overdue payment in list view with red icon &
tooltip.
* Add: New wcs_set_order_address() helper function to set an array of address
fields on an order or subscription.
* Update: Admin subscription reports are disabled on stores that have opted into
HPOS without data syncing enabled.
* Fix: Shipping address correctly set when resubscribing or switching subscriptions
that contain different billing and shipping addresses.
* Fix: When processing customer requests to update all their subscription payment
methods, ensure the updated subscription is used to fetch the new payment meta, not
and old instance.
* Fix: Catch exceptions when changing payment method associated with a subscription
to avoid fatal errors.
* Fix: Show the payment retries metabox for renewal orders that have retry attempts
on stores that have HPOS enabled.
* Fix: Scheduled retry actions are now cancelled when trashing/deleting a renewal
order on stores that have HPOS enabled.
* Fix: On HPOS stores, return the correct count per subscription status from the
`/system_status` WC API endpoint.
* Fix: Refactor `WC_Subscriptions_Switcher::process_checkout()` to support stores
with HPOS enabled.
* Fix: Refactor `WC_REST_Subscriptions_V1_Controller::get_subscription_orders()` to
support stores with HPOS enabled.
* Fix: Edit, add, and list Subscription admin pages now work when HPOS is enabled.
* Fix: Fixed issues where multiple subscription purchases wouldn't appear on the My
Account > Subscriptions screen, on HPOS environments.
* Fix: Refactor `WCS_Meta_Box_Subscription_Data::save` to support HPOS stores,
fixing a PHP warning notice when updating an order via the Edit Order screen.
* Fix: Set the `download_permissions_granted` value when purchasing a downloadable
subscription product when HPOS is enabled.
* Fix: When a customer changes their address on their account or subscription, make
sure the new address is saved when HPOS is enabled.
* Fix: Removed the potential for an infinite loop when getting a subscription's
related orders while the subscription is being loaded.
* Fix: Refactor `WC_Subscriptions_Renewal_Order` and `WC_Subscriptions_Tracker`
classes to support HPOS stores.
* Fix: "Subscriptions by Payment Gateway" in WooCommerce → Status now shows the
correct values when HPOS is enabled.
* Fix: Check whether the order actually exists before accessing order properties in
wcs_order_contains_subscription().
* Fix: When a subscription's parent order is trashed or deleted, make sure the
related subscription is also trashed or deleted on stores with HPOS enabled.
* Fix: When a subscription is trashed or deleted, make sure it is cancelled first
on stores with HPOS enabled.
* Fix: Merge any custom meta_query args passed to wcs_get_orders_with_meta_query()
to avoid overriding WC core args that map onto meta_query.
* Fix: Prevent erroneously resyncing a subscription every time it is loaded from
the database on HPOS environments.
* Fix: On HPOS environments, ensure subscription related order caches are updated
when relationship order meta (eg `_subscription_renewal` or `_subscription_switch`)
is updated.
* Fix: On HPOS environments, update related orders cache when subscription is
trashed, deleted, or restored / untrashed.
* Fix: Replace code using wp_count_posts(), get_post_type(), get_posts and
wp_delete_post() with equivalent WC Data Store functions to support stores that
have HPOS enabled.
* Dev: Add subscriptions-core library version to the WooCommerce system status
report.
* Dev: Introduced a WCS_Object_Data_Cache_Manager and
WCS_Object_Data_Cache_Manager_Many_To_One class as HPOS equivalents of the
WCS_Post_Meta_Cache_Manager classes.
* Dev: Introduced a new `untrash_order()` in the
`WCS_Orders_Table_Subscription_Data_Store` class to fix untrashing subscriptions on
stores that have HPOS enabled.
* Dev: Moved the trash, untrash & delete related `add_actions()` in the
`WC_Subscriptions_Manager` class to be added on the `woocommerce_loaded` action.
* Dev: Fix phpcs violations in the `WC_Subscriptions_Tracker` and
`WCS_Admin_System_Status` classes to improve code quality.
* Dev: Deprecate the `WC_Subscriptions_Switcher::update_shipping_methods()`
function.
* Dev: Fix phpcs violations in the `WC_REST_Subscription_System_Status_Manager`
class to improve code quality.
* Dev: Remove deprecated `strptime` function in favour of
`DateTime::createFromFormat`.
* Dev: Update subscriptions-core to 5.3.0.
* Dev: Bump minimum required version of WooCommerce to 6.5.

2022-12-06 - version 4.7.0


* Add: New wcs_get_orders_with_meta_query() helper function to query for orders and
subscriptions.
* Add: New WCS_Orders_Table_Subscription_Data_Store class to support subscriptions
stored in High-Performance Order Storage (HPOS).
* Add: New WCS_Orders_Table_Data_Store_Controller class to load the proper
subscriptions data store when the store has HPOS enabled.
* Add: New data copier class to copy data to subscriptions and related orders in
place of direct database queries in prepraration for HPOS support.
* Fix: Set payment tokens when copying data between orders and subscriptions in a
CRUD compatible way. Fixes PHP notices during renewal order process.
* Fix: Infinite loop that can occur with
`WCS_Orders_Table_Subscription_Data_Store::read_multiple()` on HPOS-enabled stores.
* Fix: On HPOS stores, when querying for subscriptions with
wcs_get_orders_with_meta_query() with status 'any', ensure that wc_get_orders()
queries for subscription statuses.
* Fix: On HPOS stores, when saving a subscription make sure subscription properties
(ie `_requires_manual_renewal`) are saved to the database.
* Fix: On HPOS stores, when a subscription is loaded from the database, make sure
all core subscription properties are read directly from meta.
* Fix: When viewing My Account > Subscriptions, fix an issue where no subscriptions
were listed when HPOS is enabled.
* Fix: On HPOS stores, ensure payment tokens are copied from the subscription to
the renewal order.
* Fix: Refactor `WCS_Meta_Box_Schedule::save` to support HPOS stores, fixing a PHP
warning notice when updating an order via the Edit Order screen.
* Fix: Return a fresh instance of the renewal order after creating it. Fixes
caching issues on HPOS sites where the returned order has no line items.
* Fix: Processing a manual renewal order with HPOS and data syncing enabled
correctly saves the related order cache metadata on the subscription and prevents
the post and order meta data getting out of sync.
* Fix: Use supported CRUD apis to determine if subscriptions are present on store
(`wcs_do_subscriptions_exist`)
* Fix: With HPOS and data syncing enabled, updating the status of a pending manual
renewal order to a paid status correctly activates the related subscription.
* Fix: Switch orders not appearing in related orders table on edit subscription
screen when HPOS is active.
* Fix: On HPOS stores, make sure the links in the related-orders table redirect to
the new Edit Order URL.
* Fix: When saving sync meta data on a new subscription, use
'woocommerce_new_subscription' instead of 'save_post'. This is to prevent errors
when purchasing a subscription on stores that have HPOS enabled.
* Fix: When WooCommerce is network activated on multisites, don't show the
"WooCommerce Subscriptions is inactive".
* Update: Improve maybe_add_subscription_meta() and
subscription_contains_synced_product() inside our WC_Subscriptions_Synchroniser
class to use CRUD methods.
* Update: Refactor the `wcs_is_subscription` helper function to support HPOS.
* Update: Refactor our Related Orders data store classes
(WCS_Related_Order_Store_Cached_CPT and WCS_Related_Order_Store_CPT) to use CRUD
methods to support subscriptions and orders stored in HPOS.
* Update: Display related orders table when viewing the new "Edit Order" page (HPOS
enabled stores).
* Update: Replace instances of `get_posts()` across codebase with new
wcs_get_orders_with_meta_query() function.
* Update: The subscription creation function `wcs_create_subscription` has been
updated to use WooCommerce CRUD methods in preparation for supporting High
Performance Order Storage (HPOS).
* Update: Improve wcs_copy_order_address() to use modern APIs for setting address
fields.
* Dev: Removed the deprecated "wcs_subscriptions_for_{$relation_type}_order"
dynamic hook used to filter the list of related subscriptions for the given
relation type. The following hooks have been removed with no alternative:
wcs_subscriptions_for_renewal_order
wcs_subscriptions_for_switch_order
wcs_subscriptions_for_resubscribe_order
* Dev: Introduce a WC_Subscription::set_status() function to handle subscriptions
set with a draft or auto-draft status. Replaces the need for the overriding
WC_Subscription::get_status() which has been deleted.
* Dev: Manual renewal orders created with HPOS and data syncing enabled are
properly linked to the subscription by its `_subscription_renewal` meta and
backfilled to posts table.
* Dev: Update subscriptions-core to 5.1.0
* Dev: Replace use of deprecated hook `wcs_renewal_order_meta_query` with
`wc_subscriptions_renewal_order_data` in `WC_Subscriptions_Switcher`.
* Dev: Usage of \WC_Subscriptions_Core_Plugin::get_plugin_version() is no longer
recommended for version detection. \
WC_Subscriptions_Core_Plugin::get_library_version() should be used instead.
* Dev: Code that was tagged with a version and moved from WooCommerce Subscriptions
now explicitly mentions this and shows the correct subscriptions-core and WC
Subscriptions versions.
* Dev: Refactor the saving of subscription dates in the subscription datastore to
separate fetching changes and saving. Enables backfilling subscription dates when
HPOS syncing is enabled.
* Dev: Replace the use of the deprecated wcs_renewal_order_meta hook with
wc_subscription_renewal_order_data in the WCS_Related_Order_Store_Cached_CPT class.
* Dev: wcs_get_objects_property and wcs_set_objects_property have been marked as
deprecated. Getters/Setters should be used on the objects instead.
* Dev: Deprecated the "wcs_{type}_meta_query" dynamic hook used to alter the
database query used to fetch the meta data to copy between subscriptions and
renewal orders. There is no direct replacement. Third-parties should use the
"wc_subscriptions_{type}_data" or "wc_subscriptions_object_data" hooks instead.
* Dev: Deprecated the "wcs_{type}_meta" dynamic hook used to filter data copied to
subscriptions and renewal orders. Third-parties should use
wc_subscriptions_{type}_data instead.
wcs_subscription_meta -> wc_subscriptions_subscription_data
wcs_parent_meta -> wc_subscriptions_parent_data
wcs_resubscribe_order_meta -> wc_subscriptions_resubscribe_order_data
wcs_renewal_order_meta -> wc_subscriptions_renewal_order_data
* Dev: woocommerce_new_subscription_data hook will only work with CPT datastore and
so has been deprecated.
* Dev: i18n usage of strftime has been deprecated for subscription titles. Date is
now formatted using woocommerce standard date formatting.
* Dev: Removes the legacy `woo-includes/` directory.
* Dev: Updated internal version references to the version of subscriptions-core.
* Dev: Bump minimum required version of WooCommerce to 6.0.

2022-10-11 - version 4.6.0


* Add: Declare incompatibility with WooCommerce High-Performance Order Storage
(HPOS).
* Fix: Move One Time Shipping metabox fields to use the
woocommerce_product_options_shipping_product_data hook introduced in WC 6.0.
* Update: Improve handling of bulk action execution.
* Dev: Update subscriptions-core to 2.3.0

2022-08-26 - version 4.5.1


* Fix - Fatal Error caused in rare cases where quantity is zero during renewal,
builds upon fix released in 4.4.0.

2022-08-04 - version 4.5.0


* Dev: Add missing `woocommerce_subscriptions_switch_link_text` and
`woocommerce_subscriptions_switch_link_classes` filters for finer control of switch
link. PR#4382
* Fix: Update subscription address when changed with renewals on block checkout.

2022-06-07 - version 4.4.0


* Fix - Fatal Error caused in rare cases where quantity is zero during renewal.
2022-05-24 - version 4.3.0
* Dev: Retrieving users subscriptions order has been updated to use the WooCommerce
specific APIs in WC_Subscriptions_Order.
* Dev: Deprecate the WC_Subscriptions_Order::get_meta() function. Use
wcs_get_objects_property( $order, $meta_key, "single", $default ) instead.
* Dev: Update the wcs_get_objects_property() function to prevent calls to
get_post_meta() on objects that support calling the get_meta() function.
* Dev: Replace the get_post_meta() calls in WCS_Post_Meta_Cache_Manager with
WC_Order::get_meta().
* Dev: Replace code using get_post_type( $order_id ) with WC Data Store
get_order_type().
* Dev: Replace all cases of update_post_meta() where an Order ID is passed to use
WC_Order::update_meta_data() instead.

2022-04-29 - version 4.2.0


* Fix: Remove WooThemes helper/updater admin notice/banner. PR#4328
* Fix: Remove PHP/deprecation notices during the early renewal and switch process
when using WooCommerce Blocks 7.2. PR#4341
* Fix: Display subscription billing details in the Cart Block when purchasing
products with subscription plans created using the All Products extension.
subscriptions-core#149
* Update: Switch to global functions to remove deprecation warnings originating
from WooCommerce Blocks. subscriptions-core#124
* Dev: Update subscriptions-core to 1.9.0. PR#4345

2022-03-22 - version 4.1.0


* Fix: Undefined variable `user_can_suspend` when a customer suspension limit is
defined and the max number of suspensions has been reached. PR#4318
* Fix: Sets up subscriptions integration with the Mini Cart Block and adds new hook
to filter compatible blocks. subscriptions-core#103
* Fix: When using a WooCommerce Blocks powered checkout, fix an issue that led to
limited products being removed from the cart when completing a switch or renewal
order. subscriptions-core#119
* Fix: When there is only one Shipping Method available in the recurring shipping
package, make sure that this method is treated as selected in the current session
and the `woocommerce_after_shipping_rate` action runs. subscriptions-core#115
* Fix: Don't anonymize new subscriptions related to old subscriptions via a
resubscribe relationship. subscriptions-core#121
* Fix: Content that appears on the My account > Payment methods page should be
translatable. subscriptions-core#125
* Dev: Update subscriptions-core to 1.7.0. PR#4319

2022-02-07 - version 4.0.2


* Dev: Update subscriptions-core to 1.6.3. PR#4307
* Fix: Replace uses of is_ajax() with wp_doing_ajax(). wcs#4296 PR#4307
* Improve handling of session data.

2022-01-19 - version 4.0.1


* Fix: Prevent fatal error when too few arguments passed to widget_title filter.
PR#4302
* Dev: Update subscriptions-core to 1.6.2. PR#4302

2022-01-19 - version 4.0.0


* New: Update the minimum required WooCommerce version from 3.9 to 4.4. PR#4282
* Fix: Unable to remove subscription line items via the REST API. PR#4258
* Fix: Don't show subscription related product fields when the custom variable type
products are created. PR#4215
* Fix: Add consistent margins to the recurring taxes totals row on the Checkout and
Cart block. PR#4273
* Fix: Fatal error due to order with no created date in order row template. PR#4273
* Fix: Fatal error on the customer payment page for renewal orders with deleted
products. PR#4273
* Fix: Prevent fatal errors on the admin subscriptions screen when a subscription
fails to load. PR#4290
* Fix: Incorrect message on the subscriptions table when filtering returns no
results. PR#4290
* Fix: Update Cart and Checkout Block hooks to prevent deprecation warnings.
PR#4280
* Tweak: Update tooltip wording when deleting product variation. PR#4273
* Tweak: Don't show an admin error notice when a store downgrades to a previous
minor version of Subscriptions. PR#4273
* Tweak: Misleading order note on payment method change. PR#4273
* Dev: Moved subscription core files moved into a new subscriptions-core library
(loaded from vendor/woocommerce/subscriptions-core). PR#4121
* Dev: New `WC_Subscriptions_Plugin` class to be the main Subscriptions plugin
handler class. PR#4116
* Dev: Moved and deprecated 33 functions from class `WC_Subscriptions` to more
suitable classes. PR#4114
* Dev: Moved switching feature related classes into its own directory
(`includes/switching/`). PR#4122
* Dev: Moved payment retry feature related classes into its own directory
(`includes/payment-retry/`). PR#4146
* Dev: Moved early renewal feature related classes into its own directory
(`includes/early-renewals/`). PR#4148
* Dev: Moved the "Accept manual renewals" feature and settings to a new
`WCS_Manual_Renewal_Manager` class. PR#4124
* Dev: Moved the "Customer Suspensions" feature and settings code to a new
`WCS_Customer_Suspension_Manager` class. PR#4138
* Dev: Moved the "Drip Downloadable Content" feature and settings to a new
`WCS_Drip_Downloads_Manager` class. PR#4142
* Dev: Moved the "Allow $0 initial checkout without a payment method" feature and
settings to a new `WCS_Zero_Initial_Payment_Checkout_Manager` class. PR#4145
* Dev: Moved the "Limited payment recurring coupon" feature to a new
`WCS_Limited_Recurring_Coupon_Manager` class. PR#4150
* Dev: Moved the custom subscription product and checkout button text feature to a
new `WCS_Call_To_Action_Button_Text_Manager` class. PR#4152
* Dev: Moved the custom active and inactive subscriber roles feature to a new
`WCS_Subscriber_Role_Manager` class. PR#4153
* Dev: Removed the Action Scheduler library from WC Subscriptions since it has been
included in WooCommerce core since version 3.0. PR#4202

2021-10-06 - version 3.1.6


* Fix: Add back the limited subscription setting for simple subscription products
(introduced in v3.1.5). PR#4214

2021-09-28 - version 3.1.5


* Fix: Update subtracted tax amounts to account for quantity changes. PR#4107
* Fix: Correctly remove limited coupons (i.e. "Active for x payments") when the
coupon code is made up of only numeric characters. PR#4139
* Fix: Only set subtracted taxes on new items when the rates don't match the base
location. PR#4177
* Fix: Hide variable subscription meta fields on the Edit Product page of custom
variable products. PR#4193
* Fix: Use the shipping fields to get and save the edit subscription shipping field
data. PR#4161
* Fix: Fix TypeError exceptions by checking for WC_Order types inside
wcs_get_subscriptions_for_order(). PR#4188
* Fix: Incorrect subtracted tax calculations when updating the subscription when
the store currency uses a comma decimal separator. PR#4182
* Fix: Hide the shipping address fields on checkout when the cart contains a
subscription product and the 'Force shipping to billing address' setting is
selected. PR#4172
* Fix: Get the signup fee for coupon calculation inclusive or excluding tax
depending on store settings. PR#4166

2021-07-22 - version 3.1.4


* Fix: Points and Rewards discounts (including WC Coupons when Points and Rewards
is active) being removed from the cart when applied on the checkout page. PR#4158
* Fix: Subscriptions with one-time shipping having shipping charged on all renewal
orders. PR#4156
* Fix: Rare fatal error caused by missing WC_Query class. PR#4155
* Fix: Make loading the variation edit product tab more performant on large sites.
PR#4144
* Fix: Add a primary key to the last payment temporary table to improve
compatibility with some hosts on larger sites. PR#4151
* Tweak: Update the wording when a customer edits their subscription address that
this applies to "future renewals". PR#4118
* Dev: Add missing `woocommerce_rest_pre_insert_shop_subscription_object` filter to
prepare_object_for_database() within the Subscriptions REST API controller class.
PR#4119
* Dev: Add a `data-payment-method` attribute to the Early Renewal modal button
action. PR#4123

2021-06-09 - version 3.1.3


* Fix: Switch calculations not correctly charging the full sign up fee when the
"Prorate Sign up Fee" option is set to "Never (charge the full sign up fee)".
PR#4096
* Fix: Fixes PayPal Reference Transactions integration with Checkout blocks.
PR#4105
* Fix: Set the updated payment token on all pending-payment renewals so that
manually retrying a failed payment uses the updated token set on the subscription.
PR#4108
* Dev: Moved the `WC_Subscriptions::enqueue_scripts` and`
WC_Subscriptions::equeue_styles` static functions to the new
`WC_Subscriptions_Frontend_Scripts` class (deprecated existing functions). PR#4104

2021-05-19 - version 3.1.2


* Fix: Don't show recurring shipping method selection when the rates and options
match the initial cart options. PR#4091
* Fix: Update the recurring shipping totals on selection and fix invalid recurring
shipping method notices. PR#4099
* Fix: Update the subscription shipping address after on switch. PR#4095

2021-05-12 - version 3.1.1


* Fix: "Invalid recurring shipping method" error on checkout when attempting to
purchase a subscription with one-time shipping. PR#4088
* Fix: Rework subscription webhook migration script added in 3.1 to clear cached
webhook data. PR#4082

2021-05-10 - version 3.1.0


* New: Add support for WooCommerce Cart and Checkout blocks. PR#3993
* New: Support v3 subscription endpoints. PR#4001
* New: Add woocommerce_inbox_variant option. PR#4084
* New: Update the WC minimum required version to WC 3.7. PR#3914
* New: Add a new Accounts setting to allow admin to enable registration on checkout
of subscription customers. PR#3883
* New: Display switch, renewal and resubscribe context in the 'Add to cart' and
'Place order' buttons. PR#3624
* Fix: Fix customer subscription caching errors on multisite installations. PR#4074
* Fix: Update the `_subtracted_base_location_taxes` when an admin edits the
subscription line item subtotal. PR#4068
* Fix: Migrate existing v3 subscription webhooks to v1 when upgrading to 3.1 to
maintain the same payload delivered. PR#4079
* Fix: Fatal error when processing an initial PayPal Standard payment on a manually
created subscription that has no parent order. PR#4033
* Fix: Only allow reactivation of pending-canceled subscription when end date is in
the future. PR#4037
* Fix: Don't add a free trial period when resubscribing to a synced subscription.
PR#4045
* Fix: Catch exceptions thrown when updating a subscription's payment method.
PR#4051
* Fix: Incorrect sign-up fee discount amount calculated when the customer is
outside of all tax zones and prices are entered with tax included. PR#4052
* Fix: Allow paying for pending parent orders that contain a limited subscription
product where the subscription is already active. PR#4061
* Fix: Show recurring shipping totals/options when a virtual product is the last
product added to the cart. PR#4053
* Fix: Refactor how `_subtracted_base_location_tax` order item meta is stored on
subscription items to avoid calculation issues when the quantity is changed.
PR#4062
* Fix: Fixes PHP notices when using the v1/subscriptions/ID/orders REST endpoint on
a subscription where one of its related orders was directly deleted from the
database. PR#4058
* Tweak: Always show the delete save card button but now display a notice when
trying to delete a card tied to an active subscription. PR#4076
* Tweak: Update the subscription order note to when the PayPal Standard
subscription is suspended and migrated over to PayPal Reference Transactions during
a switch request. PR#4057
* Tweak: Display orders in the related orders admin table sorted by date. PR#3575
* Dev: Refactor the recurring totals template. PR#3550

2021-04-16 - version 3.0.15


* Tweak: Improve compatibility with WPML. PR#4034
* Dev: Introduce filter to allow third-parties gateways to filter whether a token
meta was updated. PR#4030
* Fix: Fixes for endpoint in "My Account".

2021-04-07 - version 3.0.14


* New: Add support for importing and exporting subscription variations via the
WooCommerce > Products > Export/Import tools. PR#3970
* Fix: Only show one Subscriptions settings menu item on the WC Admin navigation.
PR#4054
* Fix: Prevent PHP notices on the Edit Subscription page caused accessing an
undefined index. PR#4056
* Fix: Existing variations will no longer be deleted when updating a regular
variable product to a subscription variable product. PR#3795
* Fix: Update the `_subtracted_base_location_tax` meta data when a subscription's
line item quantity is modified. PR#4039
* Fix: Next payment date calculations when the start date and last payment date are
the same. PR#4017
* Dev: Update jQuery 3.0 deprecations. PR#4015

2021-02-16 - version 3.0.13


* Fix: Pass an order status array to get_order_report_data() to prevent possible
fatals by 3rd parties. PR#3930
* Fix: Change logic to allow customers to pay for failed order with limited
product. PR#3947
* Fix: Prevent base length from being saved in the DB when retrieved in
'apportion_length'. PR#3954
* Fix: Prevent errors when using Product Bundles (which uses WCS_Add_Cart_Item) by
introducing a WCS_Add_Cart_Item::is_switch_after_fully_reduced_prepaid_term()
function. PR#3957
* Fix: Introduce an SQL Transactions helper with automatic commit/rollback on
shutdown. Prevents strange behaviour when a shutdown occurs during a SQL
transaction. PR#3827
* Fix: [PHP 8.0] Change maybe_retry_payment() arg name to prevent unknown variable
name errors. PR#3984
* Fix: Delete '_switch_totals_calc_base_length' meta incorrectly saved in the
database on upgrade. PR#3958
* Fix: Prevent WC_Order_Item_Coupon::offsetGet errors during renewal. PR#4009
* Dev: Introduce new hooks to various Switch_Totals_Calculator functions. PR#3872

2021-01-06 - version 3.0.12


* New: Add an order note when subscriptions are deleted after the customer is
deleted. PR#3783
* New: [WC Admin] Register items in new navigation menu. PR#3868
* New: [WC Admin] Add the Subscriptions setting to WC Admin's Settings navigation
list. PR#3911
* Tweak: Fix capitalisation of Subscription webhook topic names so they match
WooCommerce core. PR#3902
* Tweak: Refactor `wcs_help_tip()` to enable custom tooltip classes. PR#3871
* Tweak: Replace remaining uses of new WC_Order() with wc_get_order() to get an
order instance. PR#3858
* Fix: Fix the amount customers are charged after switching after a previous switch
which reduced the pre-paid term fully. PR#3805
* Fix: Calculate a gap payment when switching to a subscription with one length and
no payment date to extend. PR#3879
* Fix: Only require cart payment if there's a subscription with a next payment
date. PR#3899
* Fix: Only display the failed scheduled action warning to admin users who can view
subscriptions. PR#3905
* Fix: Prefix attribute keys correctly before getting switch url. Fixes issues with
auto-switch redirects removing pre-exisiting URL params. PR#3913
* Fix: Prevent reducing stock while saving a subscription on the admin edit
subscription screen. PR#3926
* Fix: Use product object to read the original, unmodified length of a cart item
during a switch. PR#3929
* Dev: Trigger create/update webhooks during Subscription REST API calls. PR#3919
* Dev: Add filters to enable third-parties to change the new and old payment method
titles used in subscription changed payment method notes. PR#3908

2020-11-25 - version 3.0.11


* Tweak: Improve the missing customer error message displayed for third-party built
checkouts when registration is disabled on checkout. PR#3893
* Fix: Remove the possibility of a negative calculation of prepaid days on
subscription downgrades. PR#3881
* Fix: Fix issues preventing stores using the $0 Initial Checkout feature from
being able to checkout. PR#3887
* Fix: Remove potential fatal error when processing end-of-prepaid term scheduled
actions caused by the subscription not existing. PR#3875
* Fix: Trigger payment complete actions after renewing early via modal. PR#3888
* Fix: Performance improvements to limited products running slow queries on the
shop page. PR#3895
* Fix: [PHP 8.0] Only pass array values to call_user_func_array calls. PR#3884
* Fix: [PHP 8.0] Replaces certain uses of method_exists() with is_callable().
PR#3892

2020-11-10 - version 3.0.10


* Fix: Store shipping line item instance ID separately and copy it to renewal line
item meta. PR#3712
* Fix: Account for the base store tax rates subtracted from line items when paying
for renewals manually. PR#3745
* Fix: Update the persistent cart while paying for renewal orders via the checkout.
Fixes division by zero errors while manually renewing. PR#3824
* Fix: Clear report cache data before regenerating new preset date results
preventing infinitely growing report caches. PR#3800
* Fix: Remove subscription period string transient caching to fix issues after
translating. PR#3770
* Fix: WC 4.7 compatibility. Use filter to change endpoint titles in My Account.
PR#3857
* Fix: When generating product price strings fallback to a default period string if
no period is set. PR#3848
* Fix: Remove uses of jQuery( document ).ready() which was deprecated. PR#3846
* New: Add option to enable admin to lock in increased parent order line item
prices. PR#3816
* Tweak: Allow admin to set a next payment date in 2 minutes via the edit
subscription screen on staging sites. PR#3778

2020-09-29 - version 3.0.9


* Fix: Offset subscription next payment date calculations based on site time. All
dates still remain in UTC, but calculations on the 1st and last day of the month
will now take into account the site timezone. PR#3708
* Fix: Only attempt to display the customer notice when updating the default token
from the My Account page. PR#3799
* Fix: Prefix variation attributes with `attribute_` when setting up renewal carts.
PR#3809
* Dev: Add a new hook to the change_users_subscription() function - this hook is
triggered before the status change. PR#3787

2020-09-24 - version 3.0.8


* Tweak: Remove the '$X now' from price string when synced product sign up date is
today. PR#3797
* Fix: Treat a subscription with a cancelled parent order as "needing payment".
This ensures cancelling the subscription will go right to cancelled, rather than
pending-cancellation. PR#3784
* Fix: Remove code responsible for hiding/showing the WC order totals meta box.
This fixes the deprecated jQuery.fn.load() warnings. PR#3786
* Fix: Fix updating status and end dates via the REST API. PR#3796
* Dev: Add an action hook to edit subscription admin payment meta inputs. Enables
third-parties to display custom fields for each gateway. PR#3798
* Dev: Opt-in tracking data for Subscriptions Reports PR#3738
Data sent to WooCommerce:
Subscriptions report views
Subscriptions report filter usage - clicks and report range
Number of subscriptions, orders, products
Plugin version
To disable this tracking, opt-out of WooCommerce tracking, see
https://woocommerce.com/usage-tracking/

2020-08-11 - version 3.0.7


* Fix: Prevent possible errors caused by inaccessible get_current_screen()
function. PR#3678
* Fix: Decouple single_add_to_cart_text() from add_to_cart_text() and remove double
and incorrect filtering. PR#3705
* Fix: Account for the pre-paid term when canceling a subscription which is on-hold
without a required payment. PR#3726
* Fix: [WC4.4] Replace uses of `get_product_from_item()` with `$item-
>get_product()`. PR#3769
* Fix: [WC4.4] Deprecate use of the WC_Cart::tax_display_cart. PR#3741
* Fix: [WC4.4] Update WC_Product_Variable_Subscription::get_available_variations()
function signature. PR#3761
* Fix: [WC4.0] Use the WC version appropriate hook to override the text explaining
uneditable subscriptions. PR#3678
* Fix: [WP5.5] Add permission callback for the REST statuses endpoint. PR#3765
* Fix: [WP5.5] Remove the post box header from edit subscription meta boxes #3771
* Performance: Validate product type changes on large sites to avoid running
queries on edit product page loads. PR#3699
* Tweak: [WC Code Standards] Fixes for i18n-related issues. PR#3757

2020-07-29 - version 3.0.6


* Tweak: Add placeholder explanation for the upcoming recurring report. PR#3655
* Tweak: Add a link to QuickForget.com in the IPN error notice. PR#3744
* Fix: Fix COD gateway availability for trial subscriptions. PR#3740
* Fix: Fetch customer error notice messages on the change payment method page in WC
post 3.9 version compatible way. PR#3730
* Fix: Don't reduce stock for items added to a subscription manually via admin
screen. PR#3725
* Fix: Only display the automatic renewal note in emails when there's a next
payment. PR#3679
* Fix: Use the interval to calculate first payment date for synced products. Fixes
an issue that caused a purchase outside the sync grace period to not account for
the subscription interval. PR#3303
* Dev: Add two new action hooks before and after change payment submit button.
PR#3718
* Dev: Add a new helper function wcs_trial_has_passed(). PR#3289
* Dev: Replace uses of cal_days_in_month() with a date() equivalent. PR#3734
* Dev: Make various changes to improve coding standards. PRs#3748, #3749, #3753

2020-06-16 - version 3.0.5


* Fix: Ensure the mixed checkout setting correctly prevents mixed carts after
customer login. PR#3696
* Fix: Translate the automatic subscription recurring note in emails. PR#3684
* Fix: Account for limited coupon use across recurring carts. Fixes an issue which
leads to limited coupons applying beyond the limit. PR#3552
* Fix: Copy the item usage limit to coupons applied to manual renewal carts.
PR#3686
* Dev: Add a filter to control access to the early renewal modal. PR#3675

2020-04-28 - version 3.0.4


* Fix: Save changes to payment method meta on the edit subscription screen. PR#3666
* Fix: Grant Shop Managers edit capabilities over subscriber users. PR#3669
* Fix: Remove original item from switched subscription during a multiple line item,
different billing schedule switch. PR#3659
* Fix: Use strict conditionals when comparing results of as_next_scheduled_action.
Fixes rescheduling of actions which were ran manually. PR#3661
* Tweak: To comply with Visa's changes to rules governing free trial subscriptions,
add additional subscription details to email templates. PR#3664

2020-04-01 - version 3.0.3


* Fix: Only set the payment method if it has changed via admin edit. PR#3646
* Fix: Performance issue in WCS_Payment_Tokens::get_subscriptions_from_token.
PR#3649
* Fix: Exclude empty nonce.
2020-03-11 - version 3.0.2
* New: Add WC Admin Compatibility. PR#3628
* Fix: Restore the trial end date after reactivating a subscription which was
cancelled. PR#3572
* Fix: Hide the order again button for orders which contain limited products.
PR#3612
* Fix: Don't show recurring cart taxes when no taxes apply. PR#3633
* Fix: Prevent autocompleting orders which contain free, simple, non-digital
products. PR#3621
* Fix: Remove redundant double line from customer report query. PR#3640
* Fix: [PayPal] Modify WC payload regex to account for alphanumeric chars. PR#3629
* Fix: Hide the free shipping label for free shipping and free local pickup
options. PR#3618
* Fix: Prevent fatal errors when getting price for variable products which aren't
synced. PR#3616
* Fix: Don't send WC core emails for subscription related orders when in Staging
mode. PR#3576
* Fix: Update PayPal settings URL used in admin notices. PR#3617
* Tweak: Update wording in warning when attempting to change the subscription
product type. PR#3623

2020.01.17 - version 3.0.1


* Fix: Support multiple modals on the customer's view subscription page. Fixes an
issue where preventing the early renewal modal being displayed was preventing all
modals on the page from being displayed. PR#3571
* Fix: Silence PHP warning in events by date report caused by empty set of data.
PR#3577
* Fix: [WC3.7] Copy the rate percent meta to tax line items during renewal meta
copy. PR#3578
* Fix: Introduce a user permissions check for the auto-renewal toggle. PR#3579
* Fix: Update Action Scheduler library to 3.0.1. This release includes a database
tables schema version bump. PR#3593

2020.01.06 - version 3.0.0


* New: Update Action Scheduler to 3.0.
* New: Apply WC styling to subscription statuses, subscription related order and
retry meta table statuses. PR#3467, PR#3506
* New: Introduce new Renewal Order On-hold Emails. PR#3475
* Fix: Display gateway specific errors on the subscription change payment method
page. PR#3278
* Fix: Order the results from WCS_Retry_Manager::store()->get_retries() correctly
according to the orderby arg. Previously this function would always return results
ordered by ascending ID. PR#3498
* Fix: Send customer Renewal Order Processing Emails on the correct status
transitions. PR#3475
* Fix: Only update the subscription status once when processing $0 renewals orders.
Fixes race condition caused by updating two instances of the same order. PR#3531
* Fix: Adjust admin CSS and data metabox for recent changes in WP and WC. PR#3540
* Fix: Fix admin notice error link for failed scheduled action when using
WC_Log_Handler_DB. PR#3544
* Fix: Correctly calculate inclusive line item taxes when paying for manual renewal
orders. PR#3545
* Fix: Add customer note details to renewal order email templates. PR#3536
* Fix: Validate the subscription start date during admin manual subscription
creation. PR#3556
* Fix: Only display the WC Subscriptions activation notice on sites without a
subscription product. PR#3558
* Fix: [WC 3.9] Ensure WCS_Retry_Manager::check_order_statuses_for_payment() has
default value for the $order parameter. PR3565
* Fix: [WP 5.3] Fix variable subscription product admin field CSS. PR#3564
* Tweak: [WooCommerce dashboard widget] tweak media screen size breakpoints to
avoid misalignment issues. PR#3553
* Tweak: Use product object rather than ID when validating mixed checkout setting.
Improves compatibility with plugins like Mix and Match and Product Bundles. PR#3551
* Tweak: Display the cart and checkout recurring totals included taxes in a more
readable way. PR#3546
* Dev: Allow 3rd party developers using the
'woocommerce_subscriptions_allow_switching_options' filter to add tooltip content.
PR#3542

2019.11.14 - version 2.6.5


* Fix: Account for prorated switch sign up fees in multi-switches. PR#3519
* Fix: Tooltip content displayed on WooCommerce > Subscriptions administration
screen.
* Dev: Add additional hooks in My Account Subscription Details table template.
PR#3523

2019.11.12 - version 2.6.4


* Tweak: Update the My Account customer has no subscriptions notice to match WC
core. PR#3516
* Fix: Add hidden class to subscription_pricing and subscription_sync edit product
fields. Fixes a bug when the subscription product types are removed from the edit
product type drop-down. PR#3514
* Fix: error on My Account > Payment Methods for non credit card tokens and allow
deleting tokens with clear alternative. PR#3482
* Fix: Allow only number of days in specific month for synchronize renewals.
PR#3470
* Fix: Save subscription meta box data via set_props(). Fixes fatal error when
saving invalid data. PR#3524
* Fix: Use update_option() rather than add_option() to record WC Subscriptions
activation. Fixes infinitely running activation hook under some circumstances.
PR#3525
* Dev - Opt-in tracking data for Subscriptions PR#3504
Data sent to WooCommerce:
Staging or live site
Live URL
WooCommerce Subscriptions Settings
Dates of the first and last created subscriptions
Number of subscriptions
Number of subscriptions with each status
Gross totals for switch, renewal, resubscribe, and initial totals
Order counts for for switch, renewal, resubscribe, and initial orders
To disable this tracking, opt out of WooCommerce tracking, see
https://woocommerce.com/usage-tracking/

2019.10.29 - version 2.6.3


* Fix: use dashicon over fa icon. PR#3497
* Fix: remove button type from close modal link. PR#3497
* Fix: Remove double filtering of the meta label through the
woocommerce_attribute_label filter. PR#3476
* Fix: Restore the subscription's end date after reactivation. PR#3399
* Fix: Tooltip content displayed on WooCommerce > Subscriptions administration
screen.
* Tweak: Allow modals to be displayed on admin screens. PR#3497
* Tweak: Redirect the customer to checkout after failed early renewal attempt.
PR#3494
* Dev: Allow third parties to filter the switch cart item object properties.
PR#3484

2019.10.10 - version 2.6.2


* Tweak: Add the switch direction the switch data stored in
_subscription_switch_data order meta. PR#3440
* Tweak: Add an order note to manual renewal order to note the order is awaiting
customer payment. PR#3456
* Tweak: Add note on the renewal order when a manual payment retry is ran. PR#3477
* Fix: Hide sync meta data on the edit order and subscription screen. PR#3454
* Fix: Fix an issue that led to missing _switched_subscription_item_id line item
meta which caused incorrect multi-switch upgrade costs among other issues. PR#3461
* Fix: Store the full set of current subscription counts not just the last element.
Fixes issues when exporting subscription report data. PR#3455
* Fix: Add the manually admin requested renewal order notes in the correct order.
PR#3462
* Fix: Display the customer facing subscription dates in site time. Fixing display
inconsistencies. PR#3469
* Fix: Updated the link in the staging site admin notice. PR#3473
* Fix: Only get return retries from the post store which are retry posts. Fixes an
issue where it would return a retry object for other post types. PR#3481
* Fix: Load renewal order fee items to manual renewal carts. PR#3480
* Dev: Fixed WC_Subscription::get_date() returning dates in the site time if the
site was using GMT offsets in their site settings. PR#3469

2019.09.04 - version 2.6.1


* Fix a bug that would lead to switch log entries not including all information.
PR#3441
* Fix fatal errors that would occur on the admin edit order screen on staging
sites. PR#3443
* Performance: Sort using subscription related order IDs on the application layer
with rsort() instead of MySQL orderby clause. PR#3442

2019.09.02 - version 2.6.0


* New: New option to allow customers with automatically renewing subscriptions to
renew early via a modal rather than going through the checkout. PR#3293
* New: Link subscription report counts in the 'by date' report to order and
subscription listing page. PR#3318
* New: Add different message and link to documentation for store managers when no
payment methods available on checkout. PR#3340
* New: Add a note and a tooltip explaining locked manual subscriptions on staging
sites. PR#3327
* New: Use the switching flow to enable items to be added to existing
subscriptions. PR#3394
* New: Log switch debug information when a switch order is processed. PR#3424
* Tweak: Use sentence case for table and section headings in customer facing
templates. PR#3392,#3407,#3412,#3432
* Tweak: Make improvements to the subscription admin dashboard reports. Fixes
misalignment issues on certain display sizes. PR#3401
* Tweak: Update the PayPal admin notices to be more correct based on if Standard is
enabled or not. PR#3393
* Tweak: Display PayPal type specific features in the System Status and feature
tooltip. PR#3411
* Tweak: Display un-loadable orders in the subscriptions related order table.
PR#3342
* Tweak: Always pass product instances to WC_Subscriptions_Product methods. PR#3396
* Tweak: Update the ended subscriptions report legend key for more grammatically
correct option. PR#3415
* Tweak: Disable the auto-renewal toggle on staging sites. PR#3387
* Tweak: [REST API] Include 'removed line items' in subscription response. PR#3198
* Tweak: Replace self::class with php __CLASS__ constant in report classes. PR#
* Tweak: Transform "Allow Switching" admin settings into to a multi-checkbox
option. PR#3373
* Fix: Refactor the WC_Subscriptions_Switcher::calculate_prorated_totals() function
and fix a number of switching issues in the process. PR#3250
* Fix: Keep the trial end when switching between two products with matching trial
periods when the subscription is still on trial. PR#3409
* Fix: Use the last order's paid date in switching calculations when determining
the number of days consumed in the current cycle. PR#3420
* Fix: Ignore the WP_SITEURL global on multisites when determining the site URL for
staging sites. PR#3397
* Fix: Repair subscription line items with missing `_has_trial` line item meta.
PR#3239
* Fix: Only retrieve subscriptions with the product as a line item - exclude
switched and removed products while using `wcs_get_subscriptions_for_product()`.
PR#3386
* Fix: Don't display tax values in recurring cart section when taxes aren't enabled
under certain circumstances. PR#3408
* Fix: Trigger the `woocommerce_before\after_add_to_cart_quantity` actions on the
subscription single product pages. PR#3388
* Fix: [WC 3.7] Include the "additional content" in subscription-related emails.
#3416
* Fix: [WC 3.7] Remove uses of deprecated $order->get_used_coupons(). PR#3421
* Fix: Copy or replace fees from cart to subscription while switching. PR#3184
* Fix: Save subscription after setting payment meta via wcs_set_payment_meta().
Fixes issues after updating the payment meta before payment retry. PR#3425
* Fix: Don't allow users to partially pay for renewal orders if some products are
out of stock. This was previously fixed by broke in Subscriptions 2.1. PR#3436
* Fix: Add filter which can be turned on to allow out of stock manual renewals to
pass cart and checkout validations. PR#3435
* Fix: [WC Services] Fixed compatibility bug which caused coupons to be removed
when automatic tax rates enabled with WC Services. PR#3376
* Fix: Remove uninitiated database transaction rollback in
WC_Subscriptions_Switcher::process_checkout. PR#3307
* Fix: Validate cart contents after login when mixed checkout is disabled. PR#3151
* Fix: Fix issue which led to the 'save changes' button always being active on
product variations tab. PR#3357
* Fix: Fix division by zero warning in subscriptions by customer report. PR#3371
* Fix: Use site time while adding a period to the first payment date so that last
day of month is right. PR#3368
* Performance: Limit the "product has a subscription" query to just a single result
to be more performant. PR#3389
* Dev: Deprecate get_completed_payment_count() in favor of get_payment_count().
PR#2971
* Dev: [WC 3.7] Only use deprecated woocommerce_before_cart_item_quantity_zero
hooks on WC pre 3.7. PR#3377
* Dev: Introduce WCS_Dependent_Hook_Manager class to assist in attaching callbacks
on specific WC versions. PR#3377
* Dev: Add BEM classes to templates and make general code improvements. PR#3135
* Dev: Always use get_date_types_to_schedule() to schedule dates. PR#3091
* Dev: Deprecate old and unused
WC_Subscriptions_Manager::process_subscription_payments_on_order() and
WC_Subscriptions_Manager::process_subscription_payment_failure_on_order()
functions. PR#3378

2019.07.04 - version 2.5.7


* Fix: Check for any free shipping which has its requirements met - not just the
first one. PR#3329
* Fix: Fix un-purchasability issues with limited subscriptions in manual renewal
carts. PR#3358
* Tweak: Update email address to create support admin user with. PR#3363
* Tweak: Update the plugin headers to include Automattic. PR#3365

2019.05.30 - version 2.5.6


* Fix: Exclude core order properties from the meta copied from the subscription to
early renewal orders. #PR3331
* Tweak: Add the 'is-active' class to My Account > My Subscription menu item when
user is on View Subscription page. PR#3328

2019.05.13 - version 2.5.5


* New: Add support for admin users to re-display the staging site notice if it was
previously hidden. PR#3321
* Fix: Revert a fix released in 2.5.4 which attempted to implement a workaround for
SiteGround's staging sites. PR#3323 reverts: PR#3285

2019.05.08 - version 2.5.4


* Fix: Don't save empty product sale date ranges. Fixes an issue where the sale
price appears in 1970 after a timezone offset change. PR#3283
* Fix: Validate subscription coupon types for non subscription and non-signup fee
products. Fixes an issue where subscription coupons limited to 1 use never apply to
some mixed carts. PR#3280
* Fix: Fix the PHP warnings that occur on the WP Dashboard page caused by incorrect
use of args in a sprintf string. PR#3290
* Fix: Maintain any cart coupons when emptying the cart because of the store's
mixed checkout settings. PR#3291
* Fix: Fix fatal errors when calling wcs_get_objects_property with a non-object
parameter. PR#3308
* Fix: Use the raw SERVER_ADMIN variable to generate site URL on SiteGround sites.
This fixes issues where SiteGround hosted staging sites weren't being recognized as
staging sites due to SiteGround's special handling of the site url stored in the
DB. PR#3285
* Fix: Don't check subscription limitation purchasability on admin screens. PR#3311
* Fix: Pass the 4th param to callbacks on
woocommerce_checkout_create_order_shipping_item. PR#3317
* Fix: Remove order-specific e-mail actions from "Subscription actions" drop-down.
PR#3299
* Fix: Add the item subtotal tax when manually renewing where the prices included
tax. Fixes an issue where if the store's tax rates change, customers renewing
manually may get a strange item price. PR#3286
* Tweak: Keep renewal orders "created_via" meta as "subscription" when paid via the
checkout. PR#3301
* Tweak: Remove cancelled PayPal Reference Transactions Billing Agreements from
manual, non-PayPal, and ended subscriptions. Fixes an issue where a cancelled
subscription is reactivated and attempts to use a cancelled billing agreement.
PR#3263
* Tweak: Increase the WC tested version to 3.6.0. PR#3313
* Tweak: Update Action Scheduler to 2.2.4. PR#3312
* New: Add a filter to allow 3rd parties to disable auto-switching. PR#3316

2019.03.20 - version 2.5.3


* New: Update Action Scheduler to version 2.2.1. PR#3266
* Fix: Display the subscription status names (rather than the raw status) in the
edit subscription related orders table. PR#3272
* Fix: Use the correct endpoint for redirecting to the only available subscription
on My Account. PR#3273
* Fix: [WPML] Keep language request args in Subscription My Account endpoint URLs.
PR#3068
* Fix: Save the sale price schedule dates in UTC time (like WooCommerce core).
PR#3270
* Fix: Use site time when checking if payment date and trial end date are same.
Fixes issues with synced products with a trial. PR#3264
* Fix: Update retry report queries to refer to new retry tables. PR#3237
* Fix: Do not display the PayPal Profile ID on the edit subscription screen when
the subscription is Manual Renewal. PR#3259
* Fix: Exclude `pending-cancel` subscriptions from anonymisation. PR#3256
* Fix: Pass the user ID and gateway ID parameters in the right order. Fixes issues
with bulk updating customer payment tokens. PR#3258
* Fix: Temporarily lock payment on parent orders paid with PayPal Standard.
Prevents customers paying twice while waiting for PayPal to respond. PR#2974
* Fix: Remove HTML from strings passed through translation functions. PR#3067
* Fix: Prevent endpoint settings having the same value. PR#3211
* Fix: Remove `strtolower()` uses on translated text. Prevents lowercasing
translated text which may have language specific capitalisation. PR#3251
* Fix: Prevent possible fatal errors while populating the checkout with customer
order data. Refactors the wcs_get_objects_property function. PR#3225
* Fix: Removes use of absint for amounts/totals in reports. PR#3242
* Fix: Display correct placeholder values for 'subject' and 'heading' e-mail
settings #3246
* Fix: Do not load the view-subscription scripts when subscription can't be viewed
or doesn't exist. PR#3235
* Fix: [WC3.6] Use new helper function to generate cart hash. PR#3215
* Tweak: Use 'WC_Order_Item_Product::get_product' wherever possible in
'WC_Subscriptions_Synchroniser'. PR#3230
* Tweak: Clarify the meaning of certain count values in subscription reports tool
tips. PR#3143
* Tweak: Fixes various typos. PR#3276
* Dev: Add $cart as a parameter for the
woocommerce_cart_subscription_string_details hook. PR#3257

2019.02.21 - version 2.5.2


* Fix: Check if sale price is empty before returning it as the product price. Fixes
compat. issues with Dynamic Pricing. PR#3213
* Fix: Copy subscription meta data to early renewal orders. PR#3221
* Fix: Add jquery-blockui as a dependency of the view-subscription JS file. PR#3227
* Fix: Validate the DOM object exists before applying styles. Fixes JS errors on
the My Account View Subscription page. PR#3218
* Tweak: Escape line item names via wp_kses_post to allow safe html tags. PR#3224
* Dev: Filter the wcs_cart_totals_shipping_method_price_label function to allow
third-parties to alter the free shipping label. PR#3228
* Dev: Add $variation parameter to
'woocommerce_subscriptions_product_needs_one_time_shipping' filter. PR#3197

2019.02.11 - version 2.5.1


* Fix: In report queries use WordPress prefixed table names. PR#3205
* Fix: Fix errors caused by calling WC_Gateway_Paypal::update_option() in early
WooCommerce versions. PR#3208
* Tweak: Rename the 'uncancel' admin subscription action to 'reactivate'. PR#3209
* Enhancement: Add downloadable and virtual subscription options to the filter on
the products admin page. PR#3199

2019.02.06 - version 2.5.0


* New: Add payment gateway feature support tooltips to the
WooCommerce>Setting>Payments screen. PR#3013
* New: Add Subscriptions-related information to the WooCommerce Status Widget.
PR#2980
* New: Add option to allow a $0 initial sign-up without payment method. PR#3015
* New: Update Action Scheduler to v2.2.0. PR#3187
* New: Allow customers to update all subscriptions' payment method.
PRs#3064,#3080,#3041
* New: Display downloads in separate table on the customer's View Subscription
page. PR#3128
* New: Add new option to filter Admin subscriptions table by manual subscriptions.
PR#3144
* New: Add auto-renew toggle to Customer's View Subscription page. PR #3156
* New: Add option to disable PayPal Standard for subscription-related purchases.
PR#3152
* New: Add change payment method link to the edit subscription screen. PR#3086
* New: Allow store managers and customers to uncancel a subscription while it's
still in a pending-cancel status. PR#2993
* Fix: Prevent PHP warning in WC_Subscriptions_Cart::cart_needs_payment(). PR#3142
* Fix: Do not return non-order objects from
WC_Subscription::get_related_orders( 'all' ). Prevents errors when the calling
function expects an order but got false. PR#3140
* Fix: Don't display the subscriptions My Account menu item when endpoint is empty.
PR#3146
* Fix: Fix rounding warnings with PayPal Reference Transactions. PR#3134
* Fix: Remove use of an invalid Exception object type. PR#3148
* Fix: Fallback to previous renewal when parent order is not define for PayPal
Standard IPNs. PR#2855
* Fix: Update WC_Subscription::status_transition() method to be inline with
WC_Order::status_transition(). PR#2777
* Fix: Skip non-orders objects when generating the related orders table to prevent
fatal errors. PR#3161
* Fix: Redirect non-logged in users to login when handling requests to change a
payment method. PR#3160
* Fix: Don't apply retry rules to manual renewal payment attempts. PR#3153
* Tweak: Revert subscription customer ID and post_author changes introduced for
WC3.5. PR#3159
* Tweak: Update failed scheduled action notice content. PR#3170
* Tweak: Ignore all $0.01 PayPal Standard IPN transactions. PR#3178
* Tweak: Add installed plugin information to the log file during plugin upgrade.
PR#3181
* Dev: Add WC_Subscription::get_change_payment_method_url() function. PR#3041
* Dev: Add a filter to allow custom relations to be supported by the related order
store. PR#3089
* Dev: Update uses of woocommerce_order_item_meta_end to use add_action,
remove_action - not filter APIs. #3163
* Dev: [WC 3.5.4] Subscription order key updates. PR#3171
* Dev: Deprecate WC_Subscriptions_Cart::pre_get_refreshed_fragments. PR#3173

2018.12.21 - version 2.4.7


* Fix: Fix an issue with the release date of 2.4.6.

2018.12.21 - version 2.4.6


* Dev: Add 'woocommerce_subscription_is_manual' filter. PR#3102
* Tweak: Add action attributes to the add to cart form on subscription product
pages. PR#3105
* Fix: Remove "Your subscription will be activated when payment clears" on the
order received page when the subscription is already active. PR#3099
* Fix: [WP 5.0.2] Fix an issue where the Admin Subscriptions table was empty.
PR#3139

2018.11.28 - version 2.4.5


* Fix: Fix caching on data for the Upcoming Recurring Revenue and Subscriptions By
Date reports. PR#3069.
* Fix: Fix compatibility with Disable Report Cache Updates mini-plugin. PR#3069.
* Fix: Make Stripe source ID unique while setting through REST API. PR#3090.
* Fix: Display synced variation product's next payment date after the variation is
selected by a customer on the product page. PR#3094.
* Fix: Activate subscription after processing an IPN on parent orders previously
processed by PDT. PR#3097.
* Tweak: Update incomplete retry migration status label styling and wording to "In-
Progress" to avoid confusing in-progress migrations as being a problem. PR#3088

2018.11.20 - version 2.4.4


* Fix: Prevent fatal errors when the retry migration doesn't receive a valid retry
object. PR#3042
* Fix: Fix PHP notices in subscription events by date report. PR#3078
* Fix: Don't trigger payment gateways while processing retries on staging sites.
PR#2870
* Fix: Apply coupons and discounts to initial payment and early renewal carts.
PR#3048
* Fix: Use the correct `for` attribute in the variable_subscription_trial_period
label element. PR#3081
* Fix: [PayPal Standard] Prevent creating multiple orders to record a single sign
up transaction that was previously handled by a PDT request. PR#3074
* Tweak: Remove the nonce from early renewal urls. PR#3085

2018.11.13 - version 2.4.3


* Fix: Pass the quantity argument to woocommerce_add_cart_item_data filter. PR#3051
* Dev: Update Action Scheduler to 2.1.1. PR#3059
* Dev: Add a new filter (`wcs_remove_fees_from_initial_cart`) which can be used to
override the removal of fees from the initial cart. PR#3046

2018.10.29 - version 2.4.2


* Fix: Always get the subscription's customer user from post meta. Fixes issues on
sites running WC 3.5 where the subscription customer was incorrectly being set to
an admin user. PR#3037
* Fix: Use the current timestamp of site's timezone for comparison during
synchronisation first payment date calculations. PR#3003
* Fix: Sort the user subscriptions cache to ensure subscriptions appear in the
correct order on the My Account > Subscriptions page. PR#2965
* Fix: Correctly account for tax inclusive sign up fees for synced products.
PR#2818
* Fix: Fix PHP 7.1.x warnings related to get_sign_up_fee() and product variations.
PR#3014
* Fix: Use the correct breadcrumbs on "change payment method" and "change address"
pages. PR#3008
* Fix: Fix product purchasability issues when switching between limited variable
products. PR#3007
* Fix: Remove the erasure tools link from the description of the erasure settings
for users without the manage_privacy_options capability. PR#3004
* Dev: Add switch proration filters. PR#3011
* Dev: Use admin_created_subscription hook to generate download permissions.
PR#3024
* Dev: Deprecated wcs_get_sites_timezone() fixes get_local_timezone() deprecated
warnings. PR#3032

2018.10.16 - version 2.4.1


* Fix: Cache the retry data needs migration logic to avoid a get_posts() call on
every request. PR#2994
* Fix: Load the retry store instance on WordPress init rather than on Subscriptions
plugin load. Fixes errors with third-party plugins hooking into get post queries
and calling undeclared WP functions. PR#3000
* Fix: Fix an undefined product ID error which could occur during a switch request
when trying to access a product from the old subscription format. PR#2961
* Fix: Fix a missing closing `a` tag in the downgrade notice. PR#3002
* Dev: Add a new hook ('woocommerce_admin_created_subscription') which is triggered
after a subscription is created manually via the admin screen. PR#2988
* Dev: Add new hooks to allow third-parties to customize subscription filtering
behavior on the admin subscriptions table. PR#2989

2018.10.09 - version 2.4.0


* New: Update Action Scheduler to v2.1.0.
* Fix: Remove the URL scheme when generating the site's duplicate lock URL. Fixes
an issue where staging sites with a URL length equal the scheme would incorrectly
not trigger staging mode. PR#2599
* Fix: Move callbacks attached specifically for renewal carts to the constructor so
that all extended cart classes are not hooked on. PR#2963
* Fix: Allow products which are password protected to be manually renewed via the
cart. PR#2912
* Fix: Remove unnecessary leading space in translation string. PR#2976
* Fix: Add group by clause to subscriber count reports query. PR#2970
* Fix: Fix an error which would occur when calling the deprecated
get_related_orders_query(). PR#2954
* Tweak: Separate a subscription start from the creation date. PR#2594
* Tweak: Display the expected site URL in staging site notice and system status.
PR#2950
* Dev: Implement an Autoloader for loading plugin class files. PR#2412
* Dev: Replace WC_Logger type hinting in function signatures to use lower level
WC_Logger_Interface. PR#2902
* Dev: Remove switch_line_items_pre_2_1_2() and
switch_shipping_line_items_pre_2_1_2() functions. PR#2900
* Dev: [WC 3.5] Move subscription customer ID's into the post author column on
sites running WC 3.5 and above. PR#2559
* Dev: Move payment retry data to custom tables. PR#2753
* Dev: Update file inclusions to use relative paths. PR#2936
* Dev: Add an API for third-parties to register their custom subscription date
types. PR#2840
* Dev: Update the hook used for adding Subscriptions Settings. PR#2939
* Dev: Add a 'wcs_payment_gateways_change_payment_method' filter to allow third-
parties to filter which payment methods are displayed when changing payment
methods. PR#2571
* Dev: Trigger a new 'wcs_before_replace_pay_shortcode' action before displaying
the change payment shortcode.
* Dev: Add the 'wcs_update_all_subscriptions_addresses_checked' filter to allow
third-parties to filter the default checked status of the
all_subscriptions_addresses field. PR#2948

2018.09.25 - version 2.3.7


* Fix: Don't apply subscription payment gateway filters while on the order-pay
page. PR#2927
* Fix: Prevent admin users from changing product type when the product has active
subscriptions. PR#2932
* Fix: Avoid calculating the initial order carts shipping without an address.
PR#2923
* Fix: Remove unnecessary empty() check for PHP < 5.5 compat. PR#2940
* Fix: Reinstate switch orders being returned from
WC_Subscription::get_related_orders() when called with the default $order_type
param. This returns the behavior of this function to what it was pre v2.3. PR#2946
* Tweak: [WC 3.4] Dont escape the product attribute labels in the
add-to-cart/variable-subscription.php template. PR#2914
* Tweak: Add a link to the subscription customer's profile on the admin edit
subscription screen. PR#2911
* Tweak: [dev] Update calls of remove_action() and remove_filter() removing the
unused 4th parameter. PR#2926

2018.09.10 - version 2.3.6


* New: Include subscription paid and completed UTC dates in REST API subscriptions
response. PR#2895
* Fix: When switching during a free trial the days in the new cycle are equal to
the days in the old cycle. This returns next payment date calculations to what it
was pre 2.3.3. PR#2887
* Fix: Make sure to display the inactive plugin notice on sites running unsupported
WC versions. PR#2878
* Fix: Reinstate the _customer_user admin subscriptions table filter by customer
$_GET arg. PR#2884
* Tweak: Automatically add download permissions for manually created subscriptions.
PR#2836
* Tweak: Modify renewal order staging note to include URLs of the live and staging
site. PR#2881
* Tweak: Rename
WC_Subscriptions_Change_Payment_Gateway::store_pay_shortcode_mesages(). PR#2899
* Tweak: Set "add to cart" and "place order" button text settings to default if no
value is provided. PR#2676

2018.08.27 - version 2.3.5


* Fix: Exclude customers with at least 1 subscription from the WC inactivity user
cleanup query. PR#2830
* Fix: Calculate PayPal trial args from the next payment date while resubscribing
before the subscription's end date. PR#2828
* Fix: Only display the 2.3 upgrade notice after plugin upgrade, not after install.
PR#2869
* Tweak: Add 'woocommerce_subscriptions_can_user_renew_early' filter to allow
third-parties to filter renew early eligibility. PR#2859
* Tweak: Include resubscribe data in the subscription REST API response. PR#2863
* Tweak: Improve the performance of some queries by using cached customer
subscriptions instead of meta queries. PR#2856
* Tweak: Improve the performance of the query which generates the data for the
Subscriptions by Date report. PR#2788
* Tweak: Give customers the option to update their subscription tokens after
changing their default method. PR#2819

2018.08.10 - version 2.3.4


* New: Add filter to bypass coupon removal for recurring carts. PR#2832
* Fix: Check if subscription is payable before populating the cart with a renewal
order. PR#2838
* Fix: Add a margin to the bottom of subscription information email table to better
align with other sections of the email. PR#2853
* Fix: Prevent infinite loops which can occur while trying to repair PayPal
Standard subscriptions with `S-****` Profile IDs. PR#2848
* Fix: [WC3.4.4] Check refunded order totals in a WC version compatible way. Fixes
an issue where limited coupons weren't removed after reaching their limit. PR#2850
* Tweak: Require payment for recurring carts which contain limited coupons which
will expire and then require payment. PR#2850

2018.07.24 - version 2.3.3


* Fix: Prevent infinite loops while generating variable product min and max data.
PR#2810
* Fix: Filter renewal order cart shipping packages, removing one time shipping
products from shipping calculations. PR#2811
* Fix: Only generate persistent related order and customer subscription caches via
the Transients API to avoid the possibility of retrieving out of date data stored
in the option. PR#2823
* Fix: Update WC_Subscriptions_Order::maybe_autocomplete_order() to allow for it to
handle orders before they have an ID (before they are inserted). PR#2784
* Fix: Adjust for possible differences in billing cycles because of rounding when
calculating prorated totals for switch requests. PR#2617
* Tweak: Improve UX for variation selection when limited variable product is in
cart. PR#2683
* Tweak: Remove code which supported for WC 2.5. PR#2806
* Tweak: Enforce array return value for `pre_get_users_subscriptions` filter.
PR#2814

2018.07.10 - version 2.3.2


* Fix: Extend the next payment date after early renewal if there's no end date.
PR#2804
* Fix: Prevent throwing type hinting errors when getting related orders from cache.
RR#2805
* Tweak: Don't copying `_created_via` meta from subscriptions to related orders as
this overrides the value set when the order was created. PR#2794
* Tweak: Make `wcs_get_subscriptions_for_order()` the canonical function for
retrieving subscriptions for a given order (regardless of type). PR#2805

2018.07.06 - version 2.3.1


* Fix: Catchable fatal error from function parameter hinting. PR#2797

2018.07.04 - version 2.3.0


* New: Allow store managers to link an order with a subscription using the parent
order relationship via a UI on the admin edit subscription screen. PR#2272
* New: Add an option to charge the full recurring amount at the time of sign up for
synchronised subscription products. PR#2343
* New: Add new coupon setting which store managers to use to create recurring
coupons which apply for a certain number of payments. PR * New: Add new sections to
the system status. PR#2493
* New: Allow customers to renew subscriptions before their next payment date from
their My Account Subscription page. PR#2544
* New: Add persistent cache of related order IDs in subscription meta. Improves
performance when obtaining subscription related orders. PR#2572
* New: Add new sections to the system status. PR#2493
* New: Add persistent cache of customer subscriptions. PR#2635
* New: Add extra args ($order and $cart) to
woocommerce_checkout_create_subscription filter. PR#2645
* New: Update Action Scheduler to v2.0.0.
* New: Add a new admin upgrade notice helper class `WCS_Upgrade_Notice_Manager`.
PR#2622
* New: Add WCS_INIT_TIMESTAMP constant and use it to time background updates.
PR#2739
* New: Display an admin notice when a site is downgraded. PR#2743
* Fix: Repair subscriptions which have been suspended in PayPal but not in
WooCommerce. PR#2407
* Fix: Make sure wcs_get_product_limitation() uses the parent product when
determining variation product subscription limitations. PR#2513
* Fix: Remove non-recurring fees from renewal carts. PR#2642
* Fix: Don't autocomplete orders which have a subtotal greater than 0. PR#2665
* Fix: [Reports] Exclude trashed subscriptions from all calculations. Fixes
inconsistencies between some subscription counts. PR#2674
* Fix: Check if the recurring_carts variable has been set before calling count() on
it. PR#2688
* Fix: Issues caused by a loophole where trashed or non grouped products remain a
valid subscription product parent for switching. PR#2682
* Fix: Check if there is no shipping method for a shipping zone before trying to
access it when displaying cart HTML. PR#2701
* Fix: Correctly calculate switching sign-up fee proration when switching between
synced products. PR#2722
* Fix: Indirect modification of WC_Checkout::$shipping_methods PHP errors. PR#2729
* Fix: Only allow switching between products which are visible to the customer.
PR#2727
* Fix: [WC3.4] Only trigger the woocommerce_after_add_to_cart_button action hook
once on variable subscription single product pages. PR#2750
* Fix: [WC3.4] Fix missing endpoint settings. PR#2767
* Fix: Remove unused chosen shipping methods for recurring packages. Fixes an issue
where if the number of available shipping methods changes, the recurring carts hold
onto their previously chosen method. PR#2782
* Fix: Protect against possible errors when getting the subscriptions my account
endpoint url. PR#2781
* Tweak: Prevent bulk deletion of variations in use by at least one subscription.
PR#2678
* Tweak: Add better support for custom order types via
`WC_Subscription::get_last_order()`. PR#2644
* Tweak: Add `WCS_Admin_Post_Types::get_date_column_content()` helper function for
displaying date content in post tables. PR#2643
* Tweak: Change the Edit Subscription Schedule meta box titles. PR#2649
* Tweak: Hide Recurring Coupons in the initial cart if they don't apply. PR#2616
* Tweak: Add a filter to allow third-parties to filter orders by custom order
types. PR#2667
* Tweak: Don't schedule events for subscription start & last payment dates. PR#2669
* Tweak: Add new `wcs_create_subscription` action. PR#2732
* Tweak: Include variations in the "Subscriptions by product" reports. PR#2704
* Tweak: Improve performance of getting a variable product's min and max variation
data. PR#2723
* Tweak: Add Subscription endpoints to the WC_Query endpoints. This allows our
endpoints to be considered by functions like is_wc_endpoint_url() and also
wc_body_class(). PR#2749
* Tweak: Add an order note to renewal orders processed under staging site
conditions. PR#2773
* Tweak: Add a new badge to the subscriptions admin menu item when a site is
operating as a staging site. PR#2773
* Tweak: Add note to guest checkout setting, noting that an account is required
when purchasing subscription products. PR#2751
* Tweak: Deprecate the 'wcs_pre_get_users_subscriptions' filter. PR#2785
* Tweak: Increase minimum required WC version to 2.6. PR#2786
* Tweak: Remove TLC transient library and the cache manager which implemented it.
PR#2614
* Tweak: On site's already running WC 3.0 ensure all subscriptions have address
indexes via a background repair script. PR#2605
* Tweak: Require PHP 5.6 or newer. PR#2325
* Tweak: Change 'created_via' order property for subscription orders. PR#2389
* Tweak: Boost performance of admin subscription search by using billing and
shipping indexes. PR#2409
* Tweak: Add filter to control the automatic redirect behaviour of the
Subscriptions menu item on My Account. PR#2633

2018.05.29 - version 2.2.21


* Tweak: Update WooCommerce tested up to compatibility flag.
* Fix: [GDPR] While processing erasure requests anonymise all user subscriptions
with any status. PR#2720
* Fix: Fix PHP warnings which appear on the WooCommerce > Settings > Accounts &
Privacy page and while exporting user personal data. PR#2719

2018.05.25 - version 2.2.20


* New: [GDPR] Export and erase subscription personal data when processing user
export and erasure requests. PR#2692
* New: [GDPR] Add an automatic data removal system for ended subscriptions and
their related orders. PR#2702
* New: [GDPR] Add details about the personal data the plugin collects to the
privacy policy guide. PR#2700
* Tweak: Reorder wcs_get_subscriptions_for_order logic to be more performance
friendly. PR#2697
* Tweak: Replace remote image sources with an internal asset. PR#2690
* Fix: [WC3.4] Prevent subscription related orders from being trashed/anonymised by
WC's automatic clean up system. PR#2698
* Fix: [WC3.4] Only trigger the woocommerce_before_add_to_cart_button action hook
once on variable subscription single product pages. PR#2706

2018.04.04 - version 2.2.19


* Fix: With Mixed Checkout disabled, only remove the add to cart notice when
redirected straight to checkout. Fixes issue where error notices are removed
incorrectly. PR#2541
* Fix: With Mixed Checkout disabled, only empty cart when the variation ID is the
same but with different attributes. PR#2540
* Fix: Remove the "\n" character from variable subscription item tooltips in the
admin subscriptions table. PR#2481
* Fix: Allow users to purchase limited to any status subscription products under
circumstances where the customer is blocked from purchasing because of cancelled
orders. PR#2485
* Fix: Prevent deletion of product variations in use by a subscription. PR#2507
* Fix: Get default product price when no price arg is passed into
`get_price_string()`. PR#2558
* Fix: Avoid potential for division by zero errors when switching. PR#2574
* Fix: Only force payment method selection during switch if a new subscription will
be created. PR#2567
* Fix: Remove trailing space from address_type variable. PR#2595
* Fix: Ensure the opening span tag is present for all args passed to
get_price_string(). PR#2597
* Fix: Set the product's price to the sale price even if it's 0. Fixes display
issues with subscription products on sale for $0. PR#2601
* Fix: While resubscribing, ensure subscriptions with multiple line items charge
the correct amount for all line items, not just the 1st. PR#2585
* Fix: Hide product stock settings while editing variable products. PR#2563
* Fix: Allow subscription coupons to be applied while switching subscriptions.
PR#1863
* Fix: Ensure subscriptions created via the API with an active status and a
set_paid arg set to true are saved. PR#2609
* Fix: Ensure Net Gain/Loss calculations for subscription reports convert dates
correctly to match the site's timezone. PR#2593
* Fix: Prevent the possibility for fatal errors caused by calling undeclared
functions during the payment method change requests. PR#2613
* Tweak: Ensure sign up fees are numeric before attempting to use them in
calculations. PR#2551
* Tweak: Only clear related order cache on renewal order changes. PR#2555
* Tweak: Improve checkout performance by avoiding related renewal orders query.
PR#2550
* Tweak: Add the `$plain_text` arg to order item meta start and end hooks. PR#2515
* Tweak: Refactor the view subscription template. PR#2575
* Tweak: Add Subscription My Account endpoints to wpml-config.xml file. PR#2578
* Tweak: Add 'woocommerce_subscriptions_product_limited_for_user' filter. PR#2596
* Tweak: Clear the cart if the product being added to the cart is sold individually
when mixed checkout is disabled. PR#2602
* Tweak: Use WC_DateTime objects and `getTimestamp()` rather than `format( 'U' )`
to avoid possible issues in earlier PHP versions. PR#2588
* Tweak: Add pagination to the My Account Subscriptions table. PR#2537
* Tweak: Catch, log and display an admin notice after a scheduled subscription
action timeout. PR#2484

2018.02.12 - version 2.2.18


* New: Provide custom options for subscription My Account endpoints. PR#2511
* Fix: Reinitialize tooltips after changing switching settings. PR#2517
* Fix: Only add inclusive tax rates to renewal cart items if product is taxable.
PR#2524
* Fix: [WC3.3] Fix switching between grouped products by ensuring the switch
request arguments are posted to the add to cart form. PR#2535
* Fix: Use correct meta key and compare argument when getting subscriptions with
wcs_get_subscriptions() when ordered by end or trial date. PR#2528

2018.01.29 - version 2.2.17


* Fix: Use line item meta values in a WC version compatible way. PR#2469
* Fix: Only log cache manager messages if the logger has been loaded. PR#2468
* Fix: Init `WC()->mailer()` to make sure our retry email classes are available and
loaded. PR#2476
* Fix: Update calls to 'woocommerce_payment_complete_order_status' to include order
as 3rd argument. PR#2503
* Fix: Prevent wp_kses from stripping off the allow_clear attribute of Select2
elements. PR#2354
* Fix: Update `woocommerce_cart_totals_coupon_html` filter to include an extra arg
introduced in WC 3.0. PR#2447
* Fix: Ensure the Upcoming Revenue report correctly calculates revenue in periods
beyond the next payment date. PR#2461
* Fix: [WC3.2] Print the order downloads table in renewal order emails. PR#2522
* Fix: [WC3.3] Replace uses of deprecated `woocommerce_params` with
'woocommerce_get_script_data'. PR#2509
* Fix: [WC3.3] Get the active set of PayPal API credential depending on the gateway
mode. PR#2514
* Fix: [WC3.3] Display the filter by customer on the admin subscriptions table.
PR#2521
* Tweak: Add Subscriptions template overrides to system status. PR#2422
* Tweak: Do not empty cart when adding additional units of a subscription product
when mixed checkout is disabled. PR#2464
* Tweak: Trigger a `do_action` when customers remove and readd line items to their
subscription. PR#2458
* Tweak: Untrash subscriptions when parent order is untrashed. PR#2472
* Tweak: Skip the My Account Subscriptions table, linking directly to the
subscription if customer only has one. PR#2474
* Tweak: Change the subscription product length/expiration label from 'Expire
after' to Subscription length. PR#2483
* Tweak: Reword the Mixed Checkout setting description. PR#2490
* Tweak: Cache user subscriptions to improve performance of limitation queries and
user API functions. PR#2388
* Tweak: Pass the `$number` parameter to callbacks hooked onto
`woocommerce_subscription_periods` and `woocommerce_subscription_trial_periods`.
PR#2520

2017.12.07 - version 2.2.16


* Fix: Update PayPal doc links. PR#2414
* Fix: [WC3.2] Make sure Subscriptions checks if the PayPal credentials have
changed on correct hook. PR#2430
* Fix: Only allow subscription line items to be removed from the My Account page
when they should be allowed. PR#2440
* Fix: Fix subscription ranges transient key when user has different
language/locale than site default. PR#2286
* Fix: Replace use of deprecated function with wc_get_cart_url(). PR#2442
* Fix: Force payment method selection when switching when manual renewals are
disabled. PR#2348
* Tweak: Deprecate WC_Subscriptions::add_notice() and
WC_Subscriptions::print_notices(). PR#2453
* Tweak: Display "Free" for shipping that costs 0 only. PR#2437
* Tweak: Format PayPal totals as strings when comparing. PR#2271
* Tweak: Improve recurring fee support. PR#2462

2017.11.07 - version 2.2.15


* Fix: Don't include auto-draft subscriptions in the current subscriptions count in
reports. PR#2414
* Fix: Reset cart item prorated amounts between calculations to avoid displaying
double prorated prices. PR#2413
* Fix: Fix typo in "wcs_api_subscription_updated" hook - previously
"wc_api_subscription_updated". PR#2364
* Fix: [WC3.2] Replace use of deprecated function with wc_get_checkout_url().
PR#2421
* Fix: Fix fatal error thrown while copying coupon line item meta between orders
and subscriptions. PR#2426
* Tweak: [WC3.2] Add WC tested up to plugin header args. PR#2424
* Tweak: Introduce filter to give third-parties the ability to prevent customers
from removing individual subscription line items. PR#2419

2017.11.01 - version 2.2.14


* Fix: [WC3.2] Update use of deprecated cart fee functions to use new APIs
introduced in WC 3.2. PR#2397
* Fix: [WC3.2] Ensure line item download links are included in subscription related
order emails. PR#2396
* Fix: Copy coupon line items from subscriptions to renewal orders. PR#2374
* Fix: Only apply recurring coupons to subscription products in parent orders #2375
* Fix: Allow for custom field IDs when saving subscription shipping and billing
fields. PR#2392
* Tweak: Only save the order once when copying meta data between subscription and
order objects - improves performance. PR#2383
* Tweak: Trigger a do_action when an error occurs during the renewal order creation
process. PR#2403
* Tweak: Improve PayPal Standard error handling of IPNs which refer to
subscriptions created with other systems. PR##2384

2017.10.13 - version 2.2.13


* Fix: Ensure wcs_get_subscriptions() returns the correct results when called with
the 'customer_id' and 'product_id' arguments PR#2337
* Fix: Always set the order key when manually creating subscriptions from the admin
dashboard PR#2350
* Fix: Delay granting download permissions until after the switch is complete -
fixes missing download permissions after a switch PR#2339
* Tweak: Display subscription IDs in date update exceptions PR#2342
* Tweak: Cache the flag used to determine if subscriptions exist for a slight
performance improvement PR#2360
* Tweak: [WC3.2] Add support for applying subscription coupon types to
subscriptions and orders via admin edit subscription/order screens PR#2371

2017.09.15 - version 2.2.12


* Fix: Add missing argument number to filter for print_switch_link() - fixes PHP
Warning: Missing argument 2 for WC_Subscriptions_Switcher::print_switch_link()
PR#2266
* Fix: Store decimal price values in dot separated format in the database PR#2242
* Fix: Maintain backwards compatibility by triggering
woocommerce_add_order_item_meta hooks when adding line items to a subscription from
checkout PR#2267
* Fix: PayPal RT: Fix rounding errors and undefined index notice PR#2216
* Fix: Fix empty needle PHP notice when empty strings are returned from WC()-
>countries->inc_tax_or_vat() PR#1745
* Fix: Ensure updated subscription billing and shipping names are searchable in
admin subscriptions table PR#2278
* Fix: Fix PayPal Standard cancellation IPN handling after paying for a failed
PayPal Standard renewal order PR#2284
* Fix: Add the billing interval to trial period expiration to fix issues with
calculating Upcoming Recurring Revenue report data PR#2245
* Fix: Allow payment on a subscription's most recent order for all order types not
just renewal and/or parent orders PR#2295
* Fix: Ensure switch cart items form a separate recurring cart - switch items are
processed through the checkout separately so should have separate recurring carts
PR#2313
* Fix: [API] Save the subscription object before updating the dates PR#2308
* Fix: Fix the including of the WCS_Report_Dashboard class to ensure it's only
included once PR#2300
* Fix: Never trigger gateway renewal payment hook on a subscription with an ended
status PR#2318
* Fix: Only get parent order where a parent id exists PR#2322
* Fix: Set switch order item legacy values property correctly PR#2329
* Fix: Don't throw exception when an old PayPal Standard is suspended after a
switch PR#2335
* Fix: Don't duplicate download permissions by checking for pre-existing download
permissions on subscription when new download files are added to a product PR#2317
* Fix: Make WCS options translatable PR#2302
* Fix: Add wcs_update_order_item_type() to fix all the order item type change
issues PR#2338
* Fix: Only display/add shipping if the recurring cart needs shipping PR#2269
* Tweak: Add a link to the wcs-ipn-failures log file on the failed IPN admin notice
PR#2321
* Tweak: Update subscriptions shortcode PR#2306
* Tweak: Group payment method meta in subscription billing metabox by gateway ID
PR#2305
* Tweak: Disable subscription report caching after errors PR#2297
* Tweak: Permanently delete subscriptions when an order is deleted PR#2288
* Tweak: Add wcs_renewal_order_payment_update_date_created filter PR#2289
* Tweak: Update WooCommerce.com support form links PR#2291
* Tweak: Refactor WC_Subscriptions_Manager::prepare_renewal() and add
process_renewal() PR#2280
* Tweak: Apply Select2 to country fields on Edit Subscription screen PR#1745

2017.08.01 - version 2.2.11


* Fix: Do not save subscription product meta data on other post types, including
WooCommerce Tab Manager and Jetpack post types. PR#2203
* Fix: Do not apply 'woocommerce_get_price' or 'woocommerce_product_get_price'
filters to tax inclusive/exclusive prices to avoid ever applying them twice or to
non price prices, like sign-up fees. Introduced in Subscriptions v2.2.5. PR#2261
* Fix: Copy custom and third-party order line item meta to cart line items during
the renewal/resubscribe process so that the meta persists on the
renewal/resubscribe orders and subscription. PR#2258
* Fix: Always use correct minimum variation price when generating variable price
HTML, even if there is a free trial on one variation. PR#2254
* Fix: Never apply 'woocommerce_order_formatted_line_subtotal' filter twice.
PR#2239
* Fix: Format plain text email for Subscription renewals correctly. PR#2255
* Tweak: Add Woo plugin header to be compatible with WooCommerce 3.1's updater.
PR#2252
* Tweak: Add base composer.json for using Subscriptions with Composer. PR#2229

2017.07.20 - version 2.2.10


* Fix: Do not attempt to call WC 3.0 only method when WC 2.6 is active by fixing
version check from 2.6 to 3.0. Props @lkraav. PR#2236
* Fix: Display "Limit Subscription" option on Edit Product screen even when Reviews
are disabled. PR#2233
* Fix: Hide "from" price html string if all variations have identical price and
billing schedule. PR#2142
* Fix: Guard against proration miscalculation in double switching within one
billing period. PR#2225
* Tweak: Log old version and WooCommerce versions on update. PR#2230

2017.07.12 - version 2.2.9


* Fix: WooCommerce 3.1: Notices when loading the WooCommerce > Subscriptions
administration page. PR#2206
* Fix: WooCommerce 3.1: Notices on cart redrection hook becuase of use of
'add_to_cart_fragments' hook. PR#2221
* Fix: WooCommerce 3.0: Fix download links in first (processing order) email.
PR#2185
* Fix: WooCommerce 3.0: Repair subscriptions with missing
_contains_synced_subscription meta not set when WooCommerce 3.0 was active with
Subscriptions 2.2.0 through to 2.2.7. PR#2183
* Fix: WooCommerce 3.0: Fix inactive role being assigned to users when
subscriptions are suspended with WooCommerce 3.0. PR#2195
* Tweak: New hook to allow feees to be modified on renewals and resubscribes:
'woocommerce_adjust_order_fees_for_setup_cart_for_renewal'. PR#2208
* Tweak: Truncate cache files after a threshold (50MB) to avoid growing
indefinitely. PR#1774
* Fix: Set default recurring shipping method when initial shipping method is not
available in the recurring options. PR#2214
* Fix: Get active price instead of only subscription price product meta to honour
sale prices. Fixes prorated switching costs as well as incorrect price being
displayed for variable products where one variation was cheaped because it was on
sale. PR#2215
* Fix: Allow payment on only most recent order relating to a subscription that is
pending payment to avoid assorted issues stemming from paying for older orders.
PR#2209
* Fix: Remove old PayPal IPN payload handling to match changes in WooCommerce 3.1.1
and fix potential exploit. PR#2220
* Fix: Fix default value for product limitations for products which do not have the
product limitation value saved or set on them. PR#2219
* Fix: Ignore URL scheme in duplicate site check to avoid incorrectly identifying
site as a staging site with v2.2.8 when running on a site with WP_SITEURL set, but
being overridden, either by a host like WP Engine, or by some other constant, like
FORCE_SSL_ADMIN. PR#2227

2017.06.22 - version 2.2.8


* Fix: WooCommerce 3.0: Update use of deprecated 'woocommerce_stock_html' filter by
using new wc_get_stock_html() method. PR#2175 & PR#2193
* Fix: Make sure subscriptions suspended at PayPal.com are also correctly suspended
in WooCommerce. PR#2199
* Fix: Do not display manual gateways when paying for failed renewal with an
automatic retry. PR#2177
* Fix: Compare the site URL stored by Subscriptions against the WP_SITEURL constant
when that constant is set, instead of always comparing against the 'siteurl' option
value. PR#2167
* Fix: Apply discounts from renewal orders rather than subscriptions for renewal
carts so that any code or manual application of a discount to the renewal order is
applied correctly. PR#2156
* Fix: Do not cancel auto-draft subscriptions before post deletion as they do not
need to be cancelled and cancellation emails can cause confusion. PR#2173
* Fix: Add 3rd param to 'woocommerce_order_item_name' filter calls to make sure
they match parameters on WooCommerce filters. PR#2159
* Fix: Only return parent product IDs if a parent product exists. Fixes broken
switch URLs for grouped products. PR#2160
* Fix: Update subscription payment method when renewal has been paid and has
pending status and retry. PR#2141
* Fix: Make sure trial calculations for synced variation products are correct with
PayPal Standard. PR#2168
* Fix: Set correct PHPDoc for returned type in WC_Subscription::get_parent(). Props
@davefx. PR#2169
* Fix: Set correct PHPDoc return type in wcs-renewal-functions.php. PR#2198
* Fix: Copy custom, non-prefixed, subscription meta data to renewal orders. PR#2157
* Fix: Take sale price into account when displaying "From" price for variable
products. PR#2176
* Fix: Take sale price into account when switching. PR#2171
* Fix: Fix undefined var $switched_subscriptions. PR#2192

2017.05.26 - version 2.2.7


* Tweak: Integrate with My Account > Payment Methods actions to make sure when a
customer deletes a payment method, subscriptions using that payment method are
automatically updated to use a different token. Or if there are no other payment
methods on the customer's account, a customer can't delete the payment method used
for automatic payments. PR#1866
* Tweak: Do not display 'Free' on free shipping methods to improve compatibility
with the approached used in WooCommerce 2.6 and newer. PR#1766
* Tweak: Call 'wcs_get_retry_rule_raw' even if no rule is defined so that it can be
used to add additional rules beyond default rule set. PR#2138
* Tweak: Do not get products for non product post IDs to save performance overhead.
PR#2034
* Fix: WooCommerce 3.0: Repair pending cancelled subscriptions that have not got a
scheduled action or been correctly transitioned to cancelled as part of the 2.2.7
upgrade process. PR#2129
* Fix: WooCommerce 3.0: Fixes infinite loops when using a coupon for manual renewal
via cart by storing coupon properties rather than full coupon objects in the
session. PR#2116
* Fix: WooCommerce 3.0: Fix updating a subscription address after paying manual
renewal that uses a different address to avoid addresses being incorrectly deleted
and not udpated. PR#2145
* Fix: Register subscription report scripts on top level Reports admin screens for
uses without store manage capability, but with capability to view reports. PR#2153
* Fix: Make sure login is required when purchasing subscriptions products and
"Registration on checkout" is disabled. PR#1822
* Fix: Use more than 'ipn_track_id' for different PayPal IPN messages now that
PayPal has suddently begun to use the same 'ipn_track_id' for different IPN
messages. PR#2090
* Fix: Trigger order.created webhook when creating renewal orders by Subscriptions
with WC < 3.0. PR#1793
* Fix: Lookup one time shipping setting value on the parent product on variations
rather than on the variations to make sure we find the correct value. PR#2125
* Fix: Do not cancel subscriptions that are not using PayPal as the payment method
when a PayPal Billing Agreement is cancelled (including subscriptions using manual
renewal). PR#2127
* Fix: Allow single payment subscriptions to be cancelled by customer if that
single payment is still in future (because there was a free trial). PR#2060
* Fix: Avoid errors by making sure deleted subscriptions are not returned in set of
switched and users subscriptions by respective functions for getting those
subscriptions. PR#2075 and PR#2131
* Fix: Change Edit Subscriptions admin screen "This order is no longer editable"
text to avoid confusion. PR#2128
* Fix: Do not ignore variations with empty prices during min/max calculations to
improve compatibility with 3rd party plugins, like Name Your Price. PR#2120
* Fix: Check status can be changed on payment failure to avoid throwing
exceptions/errors when the status can't be changed, which is also almost always
signifies that the status doesn't need to be changed to reflect the failure.
PR#2140
* Fix: Make it is possible to change payment method to PayPal Standard for
subscriptions imported or manually added (meaning they do not have a parent order).
PR#1956
* Fix: Restore previous v3 customer/{id}/subscriptions response structure to REST
API. PR#2150
* Fix: Add support for filtering subscriptions by customer ID in v3 legacy REST
API. PR#2144
* Fix: Show General tab for variable subscription product edit page on page load.
PR#2044
* Fix: Delete the retry date after subscription status changed. PR#2143

2017.05.05 - version 2.2.6


* Fix: WooCommerce 3.0: Guard against infinite loops caused by 3rd party code
calling order methods with a post object by making sure we have an order object,
not just an object. PR#2100
* Fix: WooCommerce 3.0: Improve compatibility with 3rd party code that adds custom
address fields by making sure we check address method is callable before calling
it, and falling back to meta data if that method doesn't exist. PR#2102
* Fix: WooCommerce 3.0: Set correct line item meta names when paying for a renewal
or resubscribe order by not relying on WooCommerce 3.0's array access
implementation. PR#2105
* Fix: WooCommerce 3.0: Assorted issues with dates not being scheduled and/or not
being set at the correct time when running WooCommerce 3.0 by making sure we only
save date properties after updating or deleting dates rather than also saving
status transitions. PR#2091
* Fix: WooCommerce 3.0: Match WooCommerce 3.0 approach to adding variation
attributes to cart/order line item name by making sure we use the line item name
rather than product title to alter renewal cart item names. PR#2109
* Fix: WooCommerce 3.0: Match WooCommerce 3.0 filters for sign-up fee prices. Fixes
compatibility with sign-up fees and Memberships. PR#2110
* Fix: Make sure a variable product is purchasable even if the variations tab
wasn't loaded before saving the product, and make sure we sync the variable
product's prices even if the variation's tabe wasn't loaded. PR#2111
* Fix: Make sure subscription is seen as having a zero total when customer
completes the Change Payment Method flow to avoid charging anything at the time of
changing payment method. PR#2082
* Fix: Fix resubscribing to products for 1 payment cuased by inconsistent variable
type being returned by WC_Subscription::get_billing_interval(). PR#2098
* Fix: "Trying to get property of non-object" notice by checking order_type
property exists before trying to access it. PR#2099
* Fix: Correct subscription variation field alignmenton WooCommerce > Edit Product
screen. PR#2104
* Tweak: Improve upgrade logging by recording version at upgrade and not deleting
logs after 6 weeks so we can trace time and day of upgrades in support and better
diagnose issues. PR#2070
* Tweak: Adds more flexibility to next payment date recalculation on activation of
a subscription with new
'woocommerce_subscription_activation_next_payment_date_threshold' hook. PR#1860
* Tweak: Improve when variations are saved by moving them to save on the
'woocommerce_save_product_variation' hook. PR#2111
* Tweak: Update Action Scheduler to v1.5.3. PR#2113

2017.04.21 - version 2.2.5


* Fix: WooCommerce 3.0: Only call get_id() if product is an object and has not been
deleted. PR#2071
* Fix: WooCommerce 3.0: Do not attempt to access WC()->payment_gateways-
>payment_gateways() when reading the subscription object and setting the payment
method, because there is no guarantee WC() will be setup yet (and we only need to
do it when the method is called not when it is being instantiated. PR#2084
* Fix: WooCommerce 3.0: Do not set payment method title in set payment method
function when instantiating subscription (i.e. prior to it being read). PR#2084
* Fix: WooCommerce 3.0: Calculate the next payment date using either last order
paid date or the last order date, whichever is the later, to maintain backward
compatiblity with versions prior to WooCommerce 3.0 support. PR#2087
* Fix: WooCommerce 3.0: Replace use of deprecated WooCommerce function removed in
WC 3.0. PR#2088
* Fix: PHP 7.1 notices with products with empty signup fees and other properties
after WooCommerce 3.0 changes for getting meta on products. PR#2064
* Fix: Allow dynamically setting properties on a subscription via
WC_Subscription::__set() for backwards compatibility. PR#2079
* Fix: Do not validate admin payment method changes which will not result in a
change to allow for changing meta on a payment method that is not active. PR#2085
* Tweak: Add wc_input_price class to subscription product price inputs to make sure
they use decimal separator and other store settings for validation. PR#2068

2017.04.12 - version 2.2.4


* Fix: WooCommerce 3.0: Correctly handle switching between grouped products in
WooCommerce 3.0 where a product can have more than one parent grouped product.
PR#2063
* Fix: Do not incorrectly create pending renewal orders and suspend PayPal Standard
Subscriptions at the time their payment is due. PayPal controls the billing
schedule for these subscriptions. PR#2069
* Tweak: Add 'woocommerce_subscriptions_order_type_dropdown' filter. PR#2065
* Tweak: Include only Subscriptions strings in POT file.

2017.04.07 - version 2.2.3


* Fix: WooCommerce 3.0: Improve backward compatibility of get_date( 'start' ) calls
for subscriptions without a date created set by WooCommerce 3.0 (which happens when
manually adding a new subscriptions). PR#2047
* Fix: WooCommerce 3.0: Prevent saving subscriptions with a 0 start date/date
created by making sure we set a default date created value when manually adding a
new subscription. PR#2048
* Fix: WooCommerce 3.0: Remove the correct 3.0 core function responsible for
sending order emails to avoid sending both WooCommerce order emails and
Subscriptions order emails. PR#2045
* Fix: WooCommerce 3.0: Make sure synchronised product meta data is set correctly
on subscription line items by using WooCommerce 3.0 compatible hook. PR#2049
* Fix: Make sure filters are applied when getting customer subscriptions with REST
API endpoints by using WC_API_Subscriptions::get_subscriptions() instead of a
custom query to get customer subscriptions. PR#1806
* Fix: Display correct variable subscription product "From" prices and grouped
subscription products prices to match tax settings. PR#2054
* Fix: Don't attempt to save shipping and billing fields which aren't set when
submitting the Edit Subscription screen to avoid notices. PR#2053
* Fix: Don't use method return value in write context in REST API to avoid errors
on certain versions of PHP. PR#2051
2017.04.04 - version 2.2.2
* Fix: WooCommerce 3.0: Fix using $this when in a static context on newer versions
of PHP affecting Edit Subscription and Edit Order screens. PR#2043
* Fix: WooCommerce 3.0: Grant new product download permissions to all subscriptions
because WooCommerce no longer does it for orders (and subscriptions are a custom
order type). PR#2039
* Fix: WooCommerce 3.0: Display subscription related System Status fields in the
System Status page on 3.0 which removed old hooks. PR#2039
* Fix: WooCommerce 3.0: Fix updating payment method and elsewhere via the Edit
Subscription administration screen. PR#2037
* Fix: WooCommerce 3.0: Store correct prorated price for switches against the order
line item so it can be used for future switches. PR#2032

2017.04.04 - version 2.2.1


* Fix: WooCommerce 3.0: Add subscription shipping line item tax the same way
WooCommerce 3.0 does it. PR#2023
* Fix: WooCommerce 3.0: Fix division by zero error when manually paying for renewal
with offsite payment methods like PayPal. PR#2036
* Fix: Send customer renewal invoice emails for manual renewals and when creating a
pending renewal. PR#2035
* Fix: Replace use of undefined variable within
WC_Subscription::get_failed_payment_count(). PR#2025

2017.04.03 - version 2.2.0


* WooCommerce 3.0 Compatibility Release
* Tweak: add new getters for subscription related product meta data to conform to
WooCommerce 3.0's new CRUD system and also prepare for subscription related product
meta data to be moved to schemes that can be applied to any product instead of only
subscription product types
* Tweak: add new subscription data store to abstract data storage of subscription
data from the subscription class, matching WooCommerce 3.0's new approach to data
abstraction.
* Tweak: add new subscription getters and setters for all subscription data to
conform to WooCommerce 3.0's new CRUD architecture
* Tweak: add new subscription date APIs to work with dates as date/time objects and
with nomclementure that aligns with WooCommerce 3.0
* Tweak: deprecate subscription last payment date APIs because they actual returned
the last order date, forcing us to also update the last order date whenever a
payment was processed. Two new APIs can now be used: last order date and last order
date paid.
* Tweak: improve variable subscription product sync performance by using cache.
Also align it with the approach WooCommerce takes.
* Tweak: update Select2 to version 4 to work with the version used by WooCommerce
3.0.
* Tweak: show recurring fees in the recurring totals section on Cart & Checkout
pages if 3rd party extensions, like Checkout Add Ons, are adding fees to recurring
carts. (PR#2005)
* Fix: don't show Subscription Data metabox title div on WooCommerce > Edit
Subscription administration screen with WordPress 4.4. (PR#1998)
* Fix: remove option to order the WooCommerce > Subscriptions administration screen
by Status, because this option is not supported. (PR#1996)

2017.03.06 - version 2.1.4


* Tweak: Lengthen PayPal IPN lock to 5 days to prevent creating duplicate renewal
orders when a fatal error occurs in processing the IPN. Prevoiusly the lock was set
to 5 minutes, meaning on the 2nd IPN would be ignored. Given fatal errors will
rarely be fixed within 5 minutes, Subscriptions will now ignore 5 days worth of IPN
retries.(PR#1838
* Tweak: Log exceptions caught while updating subscription statuses to make it
easier to diagnose issues with 3rd party code and hosting environment that occur
during status transitions. PR#1842
* Tweak: Remove lingering compatibility code for WooCommerce prior to version 2.4
as version 2.3 and older have not been supported since v2.1. PR#1750
* Fix: Changing payment method on manually added subscriptions. When manually
creating a subscription via the WooCommerce > Add Subscription administration
screen, make sure the order key meta data is set so its available when changing
payment methods on that subscription. PR#1849
* Fix: Make sure customer and admin retry emails are always sent after the initial
retry by making sure the WooCommerce mailer has be setup. PR#1840
* Fix: Do not suspend subscriptions using PayPal Standard as the payment method
when switching using PayPal Reference Transactions as the payment method. PR#1831
* Fix: Calculate correct next payment date for subscriptions suspended for more
than 30 billing periods e.g. 1 month for a daily subscription, 2.5 years for a
month subscription etc. PR#1846
* Fix: Do not update the status of a failed or pending renewal order when changing
the payment method on a subscription. PR#1720
* Fix: Make sure free shipping is available as a recurring shipping method for
subscription products with a free trial or synced to a date in the future if the
recurring total exceeds the Minimum Order Amount required for free shipping.
PR#1830
* Fix: Do not incorrectly double slash some JavaScript file URLs. Fixes JavaScript
on the WooCommerce > Edit Subscription administration screen with some hosts.
PR#1853
* Fix: Do not copy backorder line item meta data to subscriptions or renewal orders
for in-stock products. PR#1855
* Fix: Do not apply dynamic discounts from the WooCommerce Dynamic Pricing
extension to renewal or resubcribe carts to avoid discounts being compounded when
manually renewing or resubscribing. PR#1852
* Fix: Do not switch to staging mode when site is using the WP_SITEURL constant to
set the site URL to a value that differs to the URL stored in the database. Uses
WP_SITEURL constant now for site url when it is set, and get_site_url() only its
not set. PR#1717
* Fix: Correct typo on the Customer Suspensions tooltip on the WooCommerce >
Settings > Subscriptions > Miscellaneous administration screen. PR#1868
* Fix: Only setup automatic payments after switching if automatic payments are
enabled. PR#1865

2017.01.24 - version 2.1.3


* Tweak: Set renewal order's status to 'pending' before payment retry to make sure
that the status change hooks are triggered by WC_Order::update_status(). Fixes
compatibility with custom retry rules that use an order status other than pending.
(PR#1818)
* Tweak: Automatically transition resubscribe orders for $0 to 'complete' rather
than 'processing', because the existing subscription had the pending-cancellation
status and the new subscriptions first renewal will be when the first shipment is
due to be sent. (PR#1796)
* Tweak: Update Action Scheduler to v1.5.2. (PR#1773)
* Tweak: Exclude Action Scheduler comments from comments RSS feed. (PR#1773 &
Prospress/action-scheduler#66)
* Fix: Never reschedule single actions in Action Scheduler, even if the action has
a scheduled date in the future. Fixes a duplicate payment processed when PHP's
default timezone was being set to a time other than UTC, and Subscriptions < 2.1
scheduled the next payment in that timezone, then when the payment becomes due,
PHP's default timezone has been changed back to UTC. (PR#1773 & Prospress/action-
scheduler#69)
* Fix: Update renewal order line item cart data when renewal line item IDs are
updated. Fixes assorted PHP warnings and notices that resulted from outdated item
IDs, including "Division by zero" and "Undefined offset" notices. (PR#1814)
* Fix: Cancel & trash retries when corresponding renewal order is trashed/deleted
to make sure the retry is not attempted (with no ill effect). (PR#1768)
* Fix: Undefined variable notice on occasion when viewing WooCommerce > Add Order
screen when the retry system is enabled. (PR#1803)
* Fix: Display correct "New Subscription Details" in emails sent when switching
(upgrading/downgrading) a subscription. (PR#1819)
* Fix: Responsiveness of recurring totals sections of checkout table. (PR#1809)

2016.12.12 - version 2.1.2


* Tweak: Reword the description on the Disable Automatic Payments option to make it
clear it does not change existing subscriptions. (PR#1771)
* Fix: Renewal issues with servers running Memcached, which does not handle
expiration times greater than 30 days, by no longer using TLC transients, which
sets all transient expiration dates to 1 year in future. (PR#1776)
* Fix: Do not require InnoDB/SQL transactions for switching. Fixes "The original
subscription item being switched cannot be found" errors when a customer attempts
to upgrade or downgrade on servers without InnoDB active. (PR#1779)
* Fix: Pass entire product object from cart to check whether it is a subscription
when removing subscription products from the cart. Fixes compatibility with 3rd
party extensions with custom subscription product types. (PR#1778)
* Fix: Make sure all 'woocommerce_valid_order_statuses_for_payment' calls include
an order object as the 2nd parameter for callbacks to match current WooCommerce
behaviour. (PR#1789)
* Fix: Incorrect template displayed when browsing to a page with URL
/subscriptions/ when using WooCommerce prior to version 2.6. (PR#1660)
* Fix: Do not add '_synced' to recurring cart keys if 3rd party code is calling
calculate totals again, only add it once. (PR#1780)
* Fix: Display "Retry Payment" option in the "Order Actions" menu if the payment is
due, even if the order has a status applied by customer Retry Rules. (PR#1767)
* Fix: Compatibility with switching and WPML. (PR#1780)

2016.11.26 - version 2.1.1


* Tweak: Delete Subscriptions transients when using the "Clear Transients" tool via
the WooCommerce > System Status > Tools administration screen. (PR#1758)
* Tweak: Avoid infinite loops with old versions of the Shipping Multiple Addresses
extension and potentially other extension that may manually instantiate the
WC_Checkout object, which is normally a singleton accessed via WC()->checkout,
WC()->checkout or WC_Checkout::instance(). (PR#1757)
* Tweak: When a subscription's date or status is updated, unschedule all
corresponding scheduled actions, not just the first to ensure duplicate scheduled
actions that may have been added by 3rd party code or manually are also
unscheduled. (PR#1764)
* Fix: Do not require timestamps to be an integer in some date functions to fix
issues where a string representation of a timestamp is used. Fixes issues with
PayPal Standard Checkout & compatibility with the Groups for WooCommerce extension.
(PR#1763)

2016.11.12 - version 2.1.0


* New: Subscription Reports to get insights into the performance of your
subscription business: https://docs.woocommerce.com/document/subscriptions/reports/
* New: Failed Recurring Payment Retry System to help recover revenue that would
otherwise be lost: https://docs.woocommerce.com/document/subscriptions/failed-
payment-retry/
* New: More subscription emails to help you keep on top of important events, like
customer suspension and expiration:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#section-4
* New: Cancellation date to keep track of when customers cancel subscriptions, not
just when they end after being cancelled:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#section-5
* New: Allow resubscribing to subscriptions Pending Cancellation:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#resubscribe-to-
subscriptions-pending-cancellation
* New: REST API Endpoints for Subscriptions built on WordPress REST API
infrastructure:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#wp-rest-api-
endpoints
* New: Additional order type filters on the WooCommerce > Orders administration
screen to filter orders to show only subscription parent, renewal, resubscribe or
switch orders:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#additional-order-
type-filters
* Tweak: Always use Renewal Order totals and data for renewal payments, making it
possible to easily add one-time fees or discounts to renewals:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#renewal-orders-
always-used-for-renewal-data
* Tweak: Improved responsiveness and layout of the subscription pricing fields on
the Edit Product screen:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#edit-product-
interface-improvements
* Tweak: Use renewal order/subscription addresses as the default address fields
loaded on checkout for renewal, resubscribe and switch checkouts.
https://docs.woocommerce.com/document/subscriptions/version-2-1/#use-renewal-order-
or-subscription-address-on-checkout
* Tweak: Process switches (upgrades and downgrades) on order status change instead
of when the customer completes checkout:
https://docs.woocommerce.com/document/subscriptions/version-2-1/#process-upgrades-
and-downgrades-on-order-status-change
* Tweak: Small performance improvements by no longer calling deprecated hooks and
caching some queries: https://docs.woocommerce.com/document/subscriptions/version-
2-1/#performance-improvements
* Tweak: Apply add-to-cart validation to renewals and resubscribes (using the
'woocommerce_add_to_cart_validation' hook):
https://docs.woocommerce.com/document/subscriptions/version-2-1/#add-to-cart-
validation-applied-to-renewal-and-resubscribe-process
* Tweak: Link to the My Account > Subscriptions page on the Order Received/Thank
you page when using WooCommerce 2.6 so that the customer can see all their
subscriptions if they purchased multiple subscriptions in the transaction.
* Tweak: Use the 'pay_for_order' user capability check to determine whether a user
can pay for a renewal and resubscribe rather than checking their ID against the
customer ID on the subscription. (PR#1692 / PR#1716)
* Tweak: Increase next payment date threshold for end date to safeguard against
payments being processed on the last day of a subscription. (PR#1689)
* Tweak: Only check for PayPal Reference Transaction support once per week instead
of daily.
* Tweak: Consistently use the same tooltips in the store admin area as
WooCommerce.
* Tweak: Initiate auto-switch process when loading the Grouped product page.
(PR#1641)
* Tweak: New 'woocommerce_subscriptions_after_recurring_shipping_rates' hook.
* Tweak: Update scheduling system (Action Scheduler) to version 1.5.
* Fix: Do not create new orders when processing a renewal and resubscribe payment
with different details to the original order by ensuring the cart hash used by
WooCommerce is updated when creating the order. (PR#1687)
* Fix: Prevent My Account > Subscriptions endpoint page title overriding custom
menus and other items on the page calling 'the_title' filter. (PR#1737)
* Fix: Do not change the status of subscriptions using PayPal Standard when the
request to update the status at PayPal.com fails because of incorrect API
credentials. (PR#1743)
* Fix: Display incorrect PayPal API credentials notice after a status change
request or reference transaction check returns incorrect credentials error.
(PR#1743)
* Fix: Calculate switching next payment date calculations for a free product to a
non-free product correctly. (PR#1661)
* Fix: Process renewals with PayPal Reference Transactions correctly when the
ALTERNATE_WP_CRON constant is defined. (PR#1733)
* Fix: Prevent grouped subscription products being switched to non-subscription
product in the same grouped product. (PR#1666)
* Fix: Treat empty subscription suspension count option value as 0, meaning no
suspensions are allowed. (PR#1728)
* Fix: Only attempt to get paid renewal orders if there are renewal orders.
(PR#1718)

2016.09.23 - version 2.0.20


* Tweak: add new 'woocommerce_subscription_before_actions' and
'woocommerce_subscription_after_actions' hooks to the view-subscription.php
template. (PR#1608)
* Tweak: use WC_Subscriptions_Product::is_subscription() when checking if a
product is sync'd instead of checking the product type directly so that the
'woocommerce_is_subscription' filter is applied and additional product types can
add support for synchronisation. (PR#1635)
* Tweak: warn administrators when trashing subscription parent orders from row
actions that the related subscriptions will also be trashed. (PR#1647)
* Tweak: add new 'woocommerce_subscriptions_admin_related_orders_to_display'
filter to make it easier to manipulate the list of related orders on the Edit
Subscription and Edit Order screens. (PR#1631)
* Tweak: add new 'woocommerce_subscriptions_switch_is_identical_product ' filter
provide a simple way for 3rd party extensions to determine whether a product should
be considered as identical or not, for the purposes of a switch. (PR#1659)
* Tweak: add new 'wcs_paypal_ipn_note' filter to make it easier to modify the
order notes logged when processing PayPal IPN requests. @props David Marín
(PR#1657)
* Tweak: display a link to Paypal's subscription page in the Subscription Billing
Information section of the Edit Subscription administration screen. @props David
Marín (PR#1658)
* Fix: display tax correctly for carts with only sync/trials products. (PR#1599)
* Fix: calcaulte tax correctly for prorated sign-up fee during 2...n switch.
(PR#1607)
* Fix: remove duplicate call to get items from a subscription on the view-
subscription.php template. (PR#1615)
* Fix: guard against fatal errors when 3rd party code calls WordPress'
current_user_can() function with invalid parameters. (PR#1652)
* Fix: replace show_hidden_panels Javascript function which was inadvertently
displaying 3rd party panels on Edit Product screen. (PR#1637)
* Fix: add the chosen recurring shipping method variable to the parameters passed
to callbacks on 'woocommerce_subscriptions_after_recurring_shipping_rates'.
(PR#1643)
* Fix: make sure non-logged in users can buy limited subscriptions by avoiding the
call to get_posts() in wcs_get_users_subscriptions() when no user ID is specified
and no user is logged in. (PR#1649)
* Fix: recalculate free shipping availability based on recurring cart object when
applicable to fix issues with free shipping being available for the initial order
but not recurring order, either becuase of price requirements or coupons. (PR#1549)
* Fix: make sure 'woocommerce_scheduled_subscription_end_of_prepaid_term' hook is
unscheduled when a subscription with the pending cancellation status is trashed.
(PR#1589)
* Fix: only get downloadable files from directly related subscriptions, not old
subscriptions for subscriptions created by resubscribing. (PR#1612)
* Fix: variable subscription "From:" price when one variation with a higher ID has
a longer free trial than the lower priced variation. (PR#1602)
* Fix: remove unused "Email Subject (paid)" and "Email Heading (paid)" fields from
the Customer Renewal Invoice email settings page. (PR#1601)

2016.08.12 - version 2.0.19


* Tweak: require new manually added subscriptions to have a customer to avoid
issues with subscriptions created without a customer. (PR#1486)
* Tweak: set expiration on caching transients to avoid them being autoloaded on
every request and unnecessarily using memory on those requests. (PR#1540)
* Fix: update Action Scheduler to apply timezone fixes and avoid dupilcate
payments when a store's timezone is changed: https://github.com/Prospress/action-
scheduler/pull/43 (PR#1569)
* Fix: incompatibility with WooCommerce 2.6.2+ which prevented the General tab on
the WooCommerce > Edit Product administration screen from being displayed
correctly. (PR#1571)
* Fix: shipping rate caching introduced in v2.0.18 for carts containing only
products which are synchronised or have a free trial. (PR#1584)
* Fix: displaly appropriate notice when there is no recurring shipping method
available because the customer's location has not been set. (PR#1579)
* Fix: page title conflict with bbPress subscription pages. (PR#1581)
* Fix: undefined index error when using variation bulk actions (PR#1561)
* Fix: redirect loop on product page when auto-switching a limited subscription
that is on-hold. (PR#1557)
* Fix: issues on WP Engine and potentially other hosts when filtering orders
displayed on the WooCoommerce > Orders administration screen to only show renewal
orders as a result of WP Engine limiting query length. (PR#1555)
* Fix: undefined variable notice when checking if a product is limited. (PR#1552)

2016.07.22 - version 2.0.18


* Tweak: cache shipping package rates to prevent multiple re-calculations per
request. (PR#1485)
* Tweak: remove multiple, redundant calls to $subscription->get_items() and
WP_Posts_List->__construct() on admin subscriptions screen. (PR#1524)
* Tweak: support translation for subscription shortcode. (PR#1504)
* Tweak: add new 'woocommerce_subscriptions_after_recurring_shipping_rates' hook
after displaying recurring shipping rates. (PR#1517)
* Tweak: use default nonce action for change payment URL so 3rd party code can use
custom URLs is needed. (PR#1529)
* Tweak: remove duplicate PayPal log calls. (PR#1527)
* Tweak: slightly improve efficiency of wcs_can_user_resubscribe_to(). (PR#1501)
* Tweak: refactor wcs_user_has_subscription() to accept an array for statuses.
(PR#1496)
* Tweak: update _paid_date post meta flag for manual / failed payment original /
renewal orders. (PR#1488)
* Tweak: use WooCommerce's decimal place setting for rounding switch prorations.
(PR#1483)
* Fix: recurring coupons with WooCommerce 2.6.3 (issue does not exist with WC
2.6.2 or 2.6.4+). (PR#1546)
* Fix: grant new product download file permissions to existing subscriptions for
product which were not marked as downloadable or did not have downloadable files
associated with them at the time the subscription was created. (PR#1533)
* Fix: show cancel button for on-hold subscriptions with empty next payment.
(PR#1515)
* Fix: select the correct way to apply tax rates based on the
'woocommerce_adjust_non_base_location_prices' filter. (PR#1500)
* Fix: display price string for one payment subscriptions consistently between
cart/checkout and my account. e.g. display "$100 for 1 year" everywhere, instead of
"$100 for 1 year" on cart/checkout and "$100 / year" on My Account. (PR#1451)
* Fix: do not allow a customer with an active and cancelled subscription to a
product limited to active status to resubscribe to the inactive subscription.
(PR#1482)
* Fix: updates resubscribe button displayed on the limited simple subscriptoin
product pages text from the old "Renew" terminology. (PR#1487)
* Fix: calculate correct renewal/resubscribe cart item taxes rates. (PR#1476)
* Fix: honour chosen shipping method as default method. (PR#1480)
* Fix: remove the mock trial added to switches with no prorated inital switch
costs when creating the grouping key dates to fix incorrect "the next_payment date
must occur after the trial end date" error in the rare case where the first renewal
payment for the new subscription is scheduled less than 1 billing period in the
future. (PR#1519)
* Fix: always allow subscription status updates while processing PayPal IPNs to
avoid issues when processing renewals for PayPal accounts issuing out-of-odate
subscription IDs that begin with S-. (PR#1526)
* Fix: responsiveness of Subscriptions administration screen list table to improve
display on small screens. (PR#1502)
* Fix: do not use variable references ot fix 'nested by-reference foreach loop'
notice with PHP7. (PR#1522)
* Fix: tab order of billing period and interval on Edit Product screen for
subscription variations. (PR#1543)
* Fix: deviation calculations in wcs_estimate_period_between(). (PR#1455)

2016.06.24 - version 2.0.17


* Tweak: add support for bulk editing subscription variation prices using relative
increase or decrease from existing price (either fixed amount or per cent).
(PR#1425)
* Tweak: use filterable helper function when validating switch request to improve
compatibilty with Name Your Price and other plugins. (PR#1453)
* Tweak: require payment when switching from $0 / period subscriptions to a non-
zero / period subscription if the store is not disabling automatic payments so that
future payments on the new subscription can be processed automatically. (PR#1420)
* Tweak: use new WooCommerce 2.6 hook to load the View Subscription template to so
the view-subscription.php template does not require addition WC version checks.
(PR#1459)
* Tweak: add tooltip to the next payment date displayed on the Subscriptions
administration screen to indiciate that the date is only a guide when the payment
gateway controls the billing schedule (like PayPal Standard). (PR#1445)
* Fix: make sure PayPal Standard subscriptions are cancelled at PayPal when
switching a subscription with PayPal Standard as the payment method but using a
different payment method for the switch transaction. (PR#1419)
* Fix: do not generate a renewal order for the PayPal Standard IPN message for
$0.01 payments, which is used to get two trial periods on a subscription to align a
synchronised payment date, not to actually process a $0.01 payment. (PR#1413)
* Fix: calculate correct next payment date when paying for old failed or manual
renewal orders by updating the post dates on the order when the order's status is
changed to indicate payment is completed. (PR#1435)
* Fix: do not reduce stock for initial order of synchronised products when no
initial payment (like sign-up fee or prorated amount) is charged, as nothing is
shipped for that order. (PR#1438)
* Fix: use new WooCommerce 2.6 hook to load the View Subscription template to
prevent a PHP notice about deprecated my-account.php template. (PR#1459)
* Fix: provide empty default when accessing chosen shipping methods from the
session to fix 'Invalid argument supplied for foreach()' PHP notice when no default
shipping method is set. (PR#1456)
* Fix: update subscriptions using PayPal Reference Transactions to "pending-
cancelation" status rather than "cancelled" when a PayPal Billing Agreement is
cancelled to account for pre-paid time. (PR#1468)
* Fix: escape the style attribute for synchronisation fields on the Edit Product
screen correctly to avoid escaping attribute quotes. (PR#1464)
* Fix: do not allow switching using PayPal Standard as the payment method for the
switch. (PR#1461)
* Fix: do not unnecessarily copy switch related line item meta data to renewal
orders. (PR#1423)
* Fix: display correct order date on hover in the Related Orders meta box.
(PR#1442)

2016.06.10 - version 2.0.16


* Tweak: display recurring shipping selection fields on cart page instead of
notice to select recurring shipping on checkout page (when unique recurring
shipping methods are required). (PR#1431)
* Tweak: update cart hash creation for latest logic used in WooCommerce 2.6.
(PR#1426)
* Tweak: throw an exception if a scheduled next payment or expiration hook is
triggered for a subscription ID that no longer exists (due to a corrupted
database). (PR#1429)
* Tweak: add order type parameter to WC_Subscription::get_last_order() so it can
be used to return switch orders. (PR#1398)
* Fix: only validate recurring shipping for carts that have future recurring
payments. (PR#1440)
* Fix: trigger subscription.created webhook for subscriptions purchased via
checkout. (PR#1428)
* Fix: function declaration incompatible with WooCommerce 2.6 release candidate
(specifically: WC_Subscription::set_payment_method()). (PR#1434)
* Fix: duplicate My Account navigation with WooCommerce 2.6 release candidate.
(PR#1437)
* Fix: incorrect recurring shipping amount being applied to subscription products
that do not require recurring shipping if a product with an identical billing
schedule that required shipping was added then removed from the cart. (PR#1394)
* Fix: remove unused global variable in WCS_Query. (PR#1424)
* Fix: remove redundant in_the_loop() call in WCS_Query. (PR#1424)

2016.05.28 - version 2.0.15


* Tweak: WooCommerce 2.6 Compatibility.
* Tweak: with the upcoming WooCommerce 2.6, add a Subscriptions tab to the My
Account tabs and display subscriptions on that page instead of the My Account page,
which is now a "Dashboard" in WooCommerce 2.6. (PR#1377)
* Tweak: with the upcoming WooCommerce 2.6, display the new My Account tabs on the
My Account > View Subscription page. (PR#1396)
* Tweak: improve display of the My Account > View Subscription page on small
screens. (PR#1396)
* Tweak: pass $args param to 'woocommerce_new_subscription_data' filter. (PR#1410)
* Tweak: use pretty date on hover for Subscription admin screen dates. (PR#1416)
* Tweak: remove WooCommerce < 2.3 compatibility code as this versions are no
longer supported. (PR#1395)
* Fix: do not attempt to validate recurring shipping methods when no recurring
shipping is required, for example, if the subscription is for one payment or using
a Subscribe All the Things product. (PR#1404)
* Fix: do not require payment for switches with $0 switching cost unless the
subscription was using PayPal Standard as the payment method and when that's the
case, update the subscription payment method after the switch payment is processed
if the new payment method is not PayPal. (PR#1412)
* Fix: display of related orders meta box on administration Edit Order and Edit
Subscription screens with WooCommerce 2.6. (PR#1387)
* Fix: always trigger subscription renewal payment hooks (i.e.
'woocommerce_subscription_renewal_payment_complete' and
'woocommerce_subscription_renewal_payment_failed') for the first renewal payment,
even if there was no initial order for the subscription. Previously, the first
payment was not considered a renewal payment, even if it was on a renewal order.
(PR#1390)
* Fix: prioritise sign-up fee and trial length filters in cart calculations over
value set on cart item. (PR#1378)
* Fix: display correct "Total" row heading for the Related Subscriptions table
shown on the My Account > View Order page on small screens. (PR#1396)
* Fix: with the upcoming WooCommerce 2.6, do not create a new order instead of
completing payment on the renewal order when completing renewal payment via
cart/checkout. (PR#1407)
* Fix: with the upcoming WooCommerce 2.6, do not depend on the 'wc-admin-order-
meta-boxes-modal' JavaScript, as it no longer exists. (PR#1407)

2016.05.14 - version 2.0.14


* Tweak: add automatic install plugin URL for WooCommerce when it's not installed.
(PR#1345)
* Tweak: add new 'wcs_pre_get_users_subscriptions' filter for custom caching.
(PR#1360)
* Fix: make sure shipping line items are added to subscriptions for subscription
purchases where the recurring packages are different to the initial packages (i.e.
subscriptions with free trial, sync'd or multiple subscription purchases with
different shipping classes) and there is only one shipping method available and a
customer had previously chosen a different method front end of the store, but that
method has since been disabled. (PR#1319)
* Fix: don't empty the cart if adding a product already in the cart when there are
no payment gateways which support multiple subscriptions and manual renewals are
disabled. (PR#1347)
* Fix: calculate correct next payment and end date for synchronised subscriptions
with a `0` trial period value (i.e. not empty or ''). (PR#1348)
* Fix: set default values for subscriptions dropdown fields when bulk adding
variations. (PR#1350)
* Fix: rather than using the trial period and interval to determine when to
calculate a product's expiration date from, use the date returned by
WC_Subscriptions_Product::get_trial_expiration_date() to honour any 3rd party code
attaching to the 'woocommerce_subscriptions_product_trial_expiration_date' hook.
(PR#1339)
* Fix: display the correct recurring shipping price when store is using tax
inclusive pricing. (PR#1367)
* Fix: only apply recurring percent coupons when there is no free trial. (PR#1365)
* Fix: make sure a recurring shipping method has been selected before allowing
checkout for products with a free trial or synchronised. (PR#1358)
* Fix: display shipping addresses on the Order Received page and in order emails
for orders that do not require shipping but are to purchase a subscription which
does require shipping in future because they have a free trial or are synchronised.
(PR#1358)
* Fix: potential fatal error when a customer views the View Subscription page for
a subscription with a line item that can be switched but has been deleted.
(PR#1376)

2016.04.22 - version 2.0.13


* Tweak: make recurring shipping packages globally available by storing them in
WC()->shipping->packages. (PR#1294)
* Tweak: add new 'use_per_slash' param in wcs_price_string() function to allow
code calling wcs_price_string() to choose whether to use a "/" or longer from
"every" for subscriptions which renew each period. (PR#1297)
* Tweak: improve performance of POST requets to /wc-api/subscriptions/ to create a
new subscription by only calculating customer's total spent amount once, instead of
when creating the order and subscription. (PR#1316)
* Tweak: improve performance when loading the front-end product page for a
variable subscription product that is limited for logged in users with a
subscription to one of the variations of that product. (PR#1324)
* Fix: compatibility with Local Pickup Plus. (PR#1291 PR#1292 PR#1293 PR#1329)
* Fix: only modify shipping packages when cart contains a subscription. Fixes
display of shipping methods selection fields when a customer attempts to pay for a
failed or manual renewal order that contains a synced subscription product.
(PR#1291)
* Fix: pass correct shipping package key to callbacks on the
'woocommerce_add_shipping_order_item' hook for recurring shipping fields (PR#1292)
* Fix: pass the recurring package key as index value to the cart-recurring-
shipping.php template to fix compatibility with shipping extensions that hook into
that, namely Local Pickup Plus. (PR#1293)
* Fix: incorrect tax rate applied to recurring totals when using Local Pickup Plus
as the shipping method. (PR#1329)
* Fix: incorrect admin email being sent when paying for a failed renewal order.
(PR#1310)
* Fix: make sure translations are ready before attempting to use them. Also load
plugin text domain on 'init' instead of 'plugins_loaded' to improve compatibility
with localisation extension. (PR#1303)
* Fix: display of inventory settings on the Edit Product admin screen when loading
or changing to a subscription product type. (PR#1322)
* Fix: ensure sign up fee paid includes the paid tax if tax inclusive so that it
is consistent with the sign up fee due amount and the prorated sign-up fee amount
is calculated correctly when upgrading/downgrading. (PR#1312)
* Fix: do not discount sign-up fees with recurring coupons. (PR#1325)
* Fix: allow end date for a subscription to be the same as the last payment date.
Fixes subscriptions with an abandonded PayPal order being able to be
suspended/activated if that pending order is cancelled. (PR#1330)
* Fix: calculate correct end date for synchronised subscription products with a
free trial. (PR#1327)
* Fix: prorated upgrade/downgrade amount when switching a synchronised
subscription before the first payment date. (PR#1308)
* Fix: set correct number of installments when signing up for a synchronised
subscription with an end date at PayPal Standard. (PR#1313)
* Fix: only allow one variation of a limited variable product to be added to the
cart to avoid the customer being able to buy multiple variations of a limited
product. (PR#1332)
* Fix: "The next_payment date must occur after the trial end date" error notice
sometimes dislpayed on checkout when purchasing a synchronised product with a free
trial period. (PR#1324)
* Fix: add fees applied to a renewal, initial order or subscription to the cart
when paying for renewal, an initial sign-up or resubscribe. (PR#1334)

2016.03.18 - version 2.0.12


* Tweak: new 'woocommerce_my_subscriptions_actions' hook in the My Subscriptions
table
* Fix: shipping bug when the packages for recurring orders were different to those
for the initial order. Fixes compatibility with Table Rate shipping and occasional
issues with manual renewals for products with a free trial or synchronised renewal
date. Refactoring of shipping selection required to address the issue: shipping
method selection fields are now displayed on checkout in the Recurring Totals
section when the available recurring shipping rates are different to the rates for
the initial order (either because the methods are different, the costs are
different, or the package contents is different).
* Fix: error on WooCommerce > Edit Subscription admin screen for subscriptions
with recurring coupons caused by attempting to use WC()->session on backend/admin
requests
* Fix: search customer/user email address when searching via the WooCommerce >
Subscriptions administration screen
* Fix: 404's of the "My Account > View Subscription" page after updating
WooCommerce
* Fix: include up-to-date pot file

2016.03.03 - version 2.0.11


* Fix: activation issue with v2.0.10 on some sites due to get_editable_roles()
function not being defined
* Tweak: don't allow subscribers to cancel subscriptions with pending cancellation
status

2016.02.27 - version 2.0.10


* Tweak: large improvements to internationalisation of strings after a full audit
of all strings made available for localisation. Subscriptions now makes use of
string context more often, uses numbered placeholders for strings passed through
sprintf/printf, consolidated strings with same context and added more comments for
translators.
* Tweak: display details of product, shipping and tax line items at PayPal for
subscription sign-ups via Express Checkout Reference Transactions instead of only
displaying the billing agreement description.
* Tweak: add new wcs_get_address_type_to_display() method to have a single source
for all localised address type display names
* Tweak: a number of small security improvements around validation of printing
strings
* Tweak: new 'woocommerce_subscription_use_pending_cancel' filter to allow stores
to switch off the use of the Pending Cancellation status applied until the end of
any prepaid term on a subscription once it has been cancelled
* Tweak: use wp_json_encode() when possible (with WordPress v4.1 and newer)
instead of PHP's json_encode(), the use of which is discouraged
* Tweak: move user role filter to after the default roles section and introduce
wcs_get_new_user_role_names() to allow custom code to more easily customise the
role assigned to a user for subscription events.
* Fix: Product add-on incompatibility: make sure product add-ons are only applied
once for manual renewal payments for a previously failed automatic renewal payment.
* Fix: Checkout Add-ons incompatibility: add subscription fee line items to the
cart for manual renewal and resubscribe to make sure Checkout Add-ons are applied
to manual renewals and resubscribes
* Fix: compatibility with remote updaters, like WP Remote, Jetpack Manage by
activating subscriptions on 'init' not 'admin_init' because remote udpaters won't
trigger that hook.
* Fix: apply recurring coupons to manual renewals by making sure they are set in
the cart at the time of renewal. Introduces the use of the following new psuedo
coupons for carrying over recurring coupons to renewals: 'renewal_fee',
'renewal_percent' & 'renewal_cart'.
* Fix: make sure it is possible to link a subscription with a parent order by
passing a 'order_id' argument when creating or updating a subscription via the REST
API endpoints (i.e. /wc-api/v4/subscriptions/)
* Fix: don't show synchronisation fields on the Edit Product screen for a
subscription that renews daily when toggling the downloadable or virtual checkboxes
* Fix: make sure you can bulk edit variations before a variable product is saved
with WooCommerce v2.5 by using the product type field
* Fix: don't incorrectly log the "Free trial commenced for subscription" order
note on a subscription when applying coupons to make the initial payment free.
Instead, log the more general "Sign-up complete" order note whenever a subscription
without an initial payment receives the first payment complete function call.
* Fix: don't allow resubscribing to subscriptions with a $0 / period price,
because generally, this is done to charge the full cost of the subscription in the
sign-up fee, and we don't charge sign-up fees on a resubscribe.
* Fix: occassional error when updating a subscription via the Edit Subscription
screen: "Error updating subscription: A valid PayPal Billing Agreement ID value is
required" caused by using disabled payment method meta fields (Subscriptions now
uses readonly fields).
* Fix: send cancelled subscription emails to store managers when a subscription is
deleted early in the process of deletion to ensure billing meta fields are still
available to include in the email.
* Fix: log correct next payment date when processing a PayPal IPN payment request
for a subscription that has a payment in the future. Also fixes an undefined index
notice for these IPN requests for subscriptions with no free trial.
* Fix: allow disabled payment gateways that are still active as plugins to be
treated as a valid payment method when saving a subscription via the Edit
Subscription screen to avoid switching the subscription to use Manual renewals.
* Fix: always display order numbers not IDs to improve compatibility with plugins
like Sequential Order numbers
* Fix: when a switch order's status is changed, don't cancel, suspend or mark the
corresponding subscription as failed. Only do that on those status changes for the
original order.
* Fix: display all subscriptions on the Subscriptions list table when filtering by
payment method (previously the default posts per page value would be used, which is
5).
* Fix: leap year issues when creating subscription terms with PayPal Standard that
can lead to prolonged free trial or subscription duration for subscripions that
have an annual free trial or billing period.
* Fix: set correct subscription length options for subscription variations on the
Edit Product screen when first loading the page (affects subscriptions with a
billing interval other than 1)
* Fix: duplicate PayPal IPN blocking on sites running PHP prior to version 5.4.0.

2016.01.30 - version 2.0.9


* Notice: if you have customisations to the /add-to-cart/variable.php template you
wish to apply to variable subscription products, you will need to create a new
/add-to-cart/variable-subscription.php template in your theme as this version
introduces a new template specifically for variable subscription products
* Tweak: display customer as recipient on WooCommerce > Settings > Email screen
with WooCommerce 2.5+
* Tweak: automatically cancel a subscription with the 'pending-cancellation'
status if the last renewal order is refunded
* Tweak: flush rewrite rules on activation / deactivation rather than just on
upgrade to ensure /view-subscription/ rewrites are always available
* Tweak: use variation ID to test if a subscription's product line item can be
switched (helps extensions, like Name Your Price, override if specific variations
can be switched)
* Tweak: delete subscriptions on user deletion instead of simply trashing them
* Tweak: new filters for 3rd party developers to use for renewal/resubscribe:
'wcs_cart_contains_renewal', 'wcs_cart_contains_failed_renewal_order_payment',
'wcs_users_resubscribe_link_for_product', 'wcs_cart_contains_resubscribe'
* Tweak: display a notice on limited variable subscription products that can not
be switched by introducing a new variable subscription template
* Fix: after the last payment a subscription with an end date, clear the next
payment date instead of leaving it as the date of the last payment
* Fix: only display resubscribe notice if a subscription resubscribe was added to
cart successfully
* Fix: remove download permissions when product line items are switched to make
sure customer only has access to line items of the product they are currently
subscribed to
* Fix: when checking whether to apply a discount, only call is_valid_for_product()
with WooCommerce 2.5+ because it will always return false in prior versions
* Fix: make sure subscriptions are cancelled before being deleted by using the
correct hook name (they were already being correctly cancelled when trashed)
* Fix: do not redirect for auto-switching on limited subscriptions if switching
has been disabled in the store
* Fix: always create a failed renewal order for PayPal IPN messages relating to a
failure when the subscription is active because PayPal may send the subscription
suspended message before the payment failed message and therefore, we'd mark the
old renewal order as failed instead of a new renewal order
* Fix: make sure resubscribe orders do not incorrectly charge signup fees after a
failed or pending payment on the resubscribe order
* Fix: ignore suspended payment PayPal IPN messages for subscriptions with any
status other than 'active' to avoid exceptions when attempting to suspend a
subscription pending-cancellation or custom status that can't be suspended
* Fix: display the # symbol before subscription numbers/IDs in all places where
WooCommerce displays the # symbol before the order number/ID
* Fix: make sure subscriptions created with PayPal Standard are correctly
cancelled when changing the customer changes the payment method to PayPal but the
store now supports PayPal Reference Transactions
* Fix: set the correct end date for a synchronised subscription by ensuring that
no mock trial period in included in its date
* Fix: make sure correct totals are used for manual renewals (and manual payments
for failed automatic renewals) when store is using tax inclusive pricing (by making
sure the correct tax amount is added to the renewal item's price)

2016.01.07 - version 2.0.8


* Happy new year!
* Tweak: WooCommerce 2.5 email template compatibility
* Tweak: Use "Change Payment Method" as the default button text on the customer
facing Change Payment method form instead of the payment gateways's order button
text as often gateways will use something like "Place Order".
* Tweak: Move hardcoded # symbols used for Subscription ID inside translation
functions so they can be localised.
* Fix: Display PayPal Subscription Profile ID for PayPal Standard Subscriptions on
the Edit Subscription administration screen (but disable the input so that it is
not editable by default).
* Fix: When changing a subscription's payment method via the Edit Subscription
administration screen, make sure the status updated hook is trigger for the old
payment method to allow gateways to cancel/suspend it as needed.
* Fix: When changing a subscription's payment method from PayPal to a different
gateway via the Edit Subscription administration screen, suspend the existing
subscription at PayPal to ensure no future payments are processed on it.
* Fix: Apply recurring cart discount coupons to products not excluded from that
coupon even if the cart contains other products which are excluded from that
coupon. Requires WooCommerce 2.5.
* Fix: Remove renewal/resubscribe cart items from cart when the
renewal/resubscribe order or original subscription has been deleted to prevent
errors.
* Fix: Correctly cache a subscriptions payment gateway rather than instantiating
it again every time it is accessed for a small performance improvement.
* Fix: Display the View Subscription page when My Account page is set as the
site's front page.
* Fix: Allow unlimited subscription suspension by customer from their My Account
page
* Fix: Display "Total" row heading for My Subscriptions table on small displays

2015.12.16 - version 2.0.7


* New: Add a payment gateway filter to the dashboard admin subscriptions table
* New: Implement soft caching for get_related_orders()
* Tweak: Better "Name Your Price" extension switching compatibility
* Tweak: Trash a user's subscriptions when a user is deleted
* Tweak: Limit the `wcs_do_subscriptions_exist()` query to 1 result
* Tweak: Mention subscription string methods in code comments/doc to help avoid
some confusion
* Fix: Fix for limiting and paging with the /subscriptions/ API endpoint
* Fix: Use `esc_url_raw()` for redirect url instead of `esc_url()`. Fixes an issue
where the return from paypal displays checkout page again instead of order
received/details
* Fix: Replaces `parse_str()` with `wp_parse_str()` to fix an issue with
incorrectly escaped responses from PayPal in early PHP versions
* Fix: Prevent renewal orders being cancelled when clicking the "Cancel and return
to .." link from PayPal
* Fix: Check whether an order needs payment before processing initial payments.
Prevents a difficult to reproduce scenario where initial payments were processed
multiple times
* Fix: Check if a cart contains a subscription AND the subtotal is 0 before
removing any non subscriptions coupons if there is nothing for the coupon to be
applied to. Fixes a compatibility issue with extensions like URL coupons.
* Fix: Fixes some php errors when a switch order fails
* Fix: Removes subscriptions from being calculated in reports. Fixes an issue where
failed parent orders were incorrectly showing up in reports
* Fix: Filter needs_payment when processing change payment method requests. Fixes
an issue with some payment gateways displaying duplicate fields on the change
payment method form
* Fix: Paypal IPN tweaks for slow servers & popular stores - port of existing 1.5.x
fixes
* Fix: Add additional cart item data when setting up resubscribe and renewal carts
so that subscriptions with multiple line items of the same product don't get merged
into the one line item with an incorrect quantity. Fixes an issue where if a
subscription had 2 line items for the same product, on resubscribe, one of them
would disappear
* Fix: Check if $this->payment_gateway property exists. Fixes an issue when
subscriptions used on sites served using HHVM
* Fix: Prevent partially paying for a renewal order if not all renewal items are
added to cart
* Fix: Changes the $subscription->needs_payment() function to also include switch
order meta in the get get_posts query so the latest switch order or renewal order
is checked if it needs payment. Fixes customer self reactivating subscription after
prorated switch
* Fix: Zero the subscription order shipping value so that we have a clean slate to
add to when we add_shipping() when switching. Fixes incorrect/double shipping order
tax when switching
* Fix: Other minor misc spelling fixes and fixes to incorrect variable names

2015.11.16 - version 2.0.6


* New: Add a new `woocommerce_subscriptions_switched_item` callback for switching
* Tweak: Move `subscription_expired` and `subscription_end_of_prepaid_term` to the
action deprecator
* Tweak: Deprecate WC_Subscriptions_Manager::subscription_trial_end()
* Fix: Add the correct `subscription_switch` meta to all subscription switches
when there are multiple switches in the same order
* Fix: Allow autocomplete of orders that have multiple switches in the same order.
Fixes an issue where switch emails were not being sent when multiple switched items
were processed in the same order
* Fix: Adjust logic around switch label so that switching to $0 per period
displays "Downgrade". Fixes an issue where "Crossgrade" was incorrectly displayed
when downgrading to $0 per period
* Fix: Don't initiate auto-switch when a subscription needs payment
* Fix: Use the 'wc-pending' status rather than 'pending' (default WordPress)
status when manually creating a subscription. Fixes an issue with display of
pending subscriptions on the admin subscription list table
* Fix: Replace use of `__DIR__` with `dirname( __FILE__ )` to maintain
compatibility with PHP 5.2.4
* Fix: Fix the logic checking for sync day in future by comparing the full date
not just the day then the month/year if that day is after the current day. This
ensures we don't see a day in the future with a month and year in the past or same
as today as being a date in the future
* Fix: Display the resubscribe relationship in the admin edit order and
subscription related orders table
* Fix: Directly access the `$_REQUEST['action']` variables instead of using
`$wp_list_table->current_action()`. Fixes an issue where while filtering the admin
subscriptions list table by customer, attempting to update a subscription status
using the provided suspend, cancel and reactivate actions wouldn't actually update
the status
* Fix: Honour previous filters applied to the admin subscription list table after
updating an individual subscription status using the provided actions

2015.11.07 - version 2.0.5


* Tweak: the "Suspend" button is no longer displayed on a store manager's View
Subscription page when 0 suspensions are allowed, to avoid confusion (store
managers can always suspend subscriptions from the Manage Subscriptions screen)
* Tweak: use both order status and paid date meta data to find the completed
payment count on a subscription because some payment gateways don't set the paid
date and some stores may run custom code or 3rd party plugins using a custom order
status other than "completed"
* Tweak: add new 'woocommerce_subscriptions_switch_error_message' filter and
improve params on 'woocommerce_subscriptions_is_switch_valid' to allow 3rd party
code, like Name Your Price, to allow their products to be switched
* Tweak: add new 'woocommerce_subscriptions_paid_order_statuses' filter for 3rd
party code to declare what custom order status should be considered as marking an
order as paid
* Fix: update the trial, next payment and end dates as well as the start date when
changing the status of a order used to purchase a subscription (for stores which
use manual payment methods which can take days before payment is received)
* Fix: incorrect tax calculation when resubscribing or manually renewing to a
subscription when prices are tax inclusive
* Fix: always setting subscription start date to 1 minute in past when manually
adding a subscription via the Edit Subscription screen (by updating the post cache)
* Fix: handling of 'recurring_payment_suspended_due_to_max_failed_payment' and
'recurring_payment_suspended' PayPal IPN requests which send a PayPal Express
Checkout IPN payload for PayPal Standard Subscriptions
* Fix: incorrectly removing any non-Subscriptions role from a user when purchasing
or deactivating a subscription (by removing and adding only the default role)
* Fix: PHP notice about undefined index 'txn_type' for PayPal IPNs relating to a
refund
* Fix: errors relating to an order awaiting payment that has been set to false or
deleted instead of being unset in the WooCommerce session
* Fix: incorrect transition of orders (including renewal orders) for $0 amounts to
"completed", instead make sure they are transitioned to the default completed
status (i.e. "processing")

2015.11.02 - version 2.0.4


* Tweak: cache available subscription lengths to improve performance of the
WooCommerce > Subscriptions list table page
* Tweak: add safeguards to prevent a next payment within 2 hours when activating a
subscription, or a new next payment date be calculated within 2 hours in the
future. Works around issues with 3rd party code using date_default_timezone_set()
and a daylight savings bug that will be fixed in a future release
* Tweak: add new filters to allow 3rd party extensions to make their product types
switchable (specifically to allow Name Your Price products to be switchable without
any changes other than price). Props @helgatheviking
* Tweak: display subscription details on customer facing change payment method
process for gateways which use the Checkout > Pay page a 2nd time
* Tweak: when deleting a user, make a note on the subscriptions that user was
associated with (which will automatically be cancelled)
* Fix: accumulated proration of sign-up fees when the customer switches a
subscription multiple times (e.g. when sign-up fee proration is enabled and a
customer upgrade from a product with a $100 fee to a $200 fee, then again to a $300
fee, only charge a $100 sign-up fee, not $200)
* Fix: don't suspend then reactivate subscriptions at PayPal on a renewal
(introduced with 2.0.3) because store manager don't like the extra status change
entries logged at PayPal and also PayPal doesn't sent a Subscription reactivated
IPN, but does send a Subscription suspended IPN, which could lead to subscriptions
remaining on-hold incorrectly if IPN handling code for PayPal Express
Checkout/Digital Goods was handling it
* Fix: customer facing change payment method process for gateways which need to
use the Checkout > Pay page a 2nd time, for example, to collect credit card details
* Fix: JavaScript pop-up notices relatd to invalid billing schedule modifications
on the Edit Subscription screen, broken with v2.0.3
* Fix: don't attempt to cancel an expired, trashed or cancelled subscription when
deleting a user (the subscription has already been deleted)
* Fix: don't record failed payment twice on a subscription with code calling
WC_Subscription->payment_failed() with an unpaid renewal order
* Fix: handling of PayPal IPN for first payment that is sent before the payment is
due for a subscription with a free trial date
* Fix: handling of PayPal IPN for subscription failure for a subscription has has
previously been cancelled (not sure why PayPal sends this IPN when the subscriptoin
has already been cancelled)
* Fix: don't send Customer Invoice email when using the the "Create Pending
Renewal Order" action from the Edit Subscription screen for a subscription that
uses manual renewals
* Fix: don't automatically complete a pending renewal order for $0 when using the
"Create Pending Renewal Order" action from the Edit Subscription screen
* Fix: fix PHP notices dislpayed when removing multiple cart items from the cart
which relate to a failed initial payment
* Fix: don't prorate sign-up fees for synchronised subscriptions when proration is
enabled for the first renewal payment
* Fix: allow customers to pay failed parent orders which contain a subscription
product limited to one of any status
* Fix: fatal errors when 3rd party code is calling
WC_Subscriptions_Product::is_subscription() on a deleted product
* Fix: don't generate subscription renewal order for subsc_failed PayPal IPN
messages
* Fix: increase PayPal IPN logging to help diagnose issues faster
* Fix: download links in the "download your files" email

2015.10.27 - version 2.0.3


* New: One Time Shipping feature:
https://docs.woocommerce.com/document/subscriptions/store-manager-guide/#one-time-
shipping
* Tweak: redirect to View Subscription page after changing payment method for
payment methods redirecting back to My Account page
* Fix: reactivation of subscriptions using PayPal Standard as the payment method
after a subscription renewal payment IPN message is sent (introduced with 2.0.2)
* Fix: use of start date in based on current GMT/UTC offset instead of GMT/UTC
offset at the time the subscription was created to handle daylight savings time and
changes to a site's timezone
* Fix: notices when saving a manually added subscription with the pending status
via the WooCommerce > Add Subscription administration interface
* Fix: increase specificity of JS selector on Edit Product screen to make sure
subscription pricing fields are only inserted once, even when other code is adding
additional pricing sections
* Fix: return estimated subscription length instead of null for 3rd party code
calling deprecated API functions
* Fix: always use WC_API_Subscriptions->get_subscription() to construct the API
response for WC-API endpoints

2015.10.21 - version 2.0.2


* New: create pending renewal order action from the Edit Subscriptions screen
* New: process renewal action from the Edit Subscriptions screen
* New: 'woocommerce_subscriptions_validate_coupon_type' filter to improve
compatibility with Free Gift Coupons extension
* Tweak: display HTTP errors that occur during upgrade
* Tweak: always allow a store manager to change a subscription to use "Manual"
renewal method on the Edit Subscription screen, even if manual renewals are not
enabled for checkout
* Fix: repair data not migrated correctly from Subscriptions 1.n, especially
important for repairing incorrect dates for stores that upgraded with 2.0.0. Data
repaired is dates, customer notes and line tax data.
* Fix: repair subscrpitions incorrectly expired due to incorrect expirate date set
during the 2.0.0 upgrade process
* Fix: bug in upgrade process preventing line tax date being copied correctly
* Fix: bug in upgrade process preventing customer notes on subscription orders
being copied to subscriptions
* Fix: bug in upgrade process where incorrect dates could be set on subscriptions
(only affecting upgrades run with 2.0.0 not 2.0.1 and dates will be repaired on
upgrade to this version)
* Fix: infinite loop during upgrade process if store had subscription order item
meta data but the corresponding order item had been deleted
* Fix: call deprecated status change hooks: 'activated_subscription',
'suspended_subscription', 'subscription_put_on-hold', 'cancelled_subscription' and
'reactivated_subscription' to improve compatibility with plugins that have not been
updated for Subscriptions 2.0 yet
* Fix: hide refund button on Edit Subscriptions screen: subscriptions can not be
refunded, only orders
* Fix: handling of PayPal IPN
recurring_payment_suspended_due_to_max_failed_payment messages - correctly create
renewal order on failure instead of simply suspending the subscription
* Fix: occassional "Invalid argument supplied for foreach" notices on cart page
when attempting to get shipping methods
* Fix: do not show "Free!" for grouped products with a free trial on the grouped
product's page when product is in the cart
* Fix: paying for renewal of a limited subscription product
* Fix: customer changing payment method with PayPal RT
* Fix: [subscriptions] shortcode

2015.10.09 - version 2.0.1


* Tweak: add a log entry when processing an IPN request completes
* Fix: PayPal IPN handling for subscriptions purchased with older versions of
WooCommerce
* Fix: renewal failure on stores running code attached to the deprecated
'woocommerce_subscriptions_renewal_order_created' hook and not returning the
renewal order (which wasn't required previously because it was an action)
* Fix: checkout errors on stores running code calling the deprecated
WC_Subscriptions_Order::get_recurring_total_tax() method
* Fix: upgrade error when upgrading a sync'd subscription that has been trashed
for a product that has been permanently deleted

2015.10.05 - version 2.0.0


* New: purchase different subscription products in the same transaction:
https://docs.woocommerce.com/document/subscriptions/version-2/#section-2
* New: administration interface for Adding or Editing a subscription:
https://docs.woocommerce.com/document/subscriptions/version-2/#section-3
* New: downloadable content dripping:
https://docs.woocommerce.com/document/subscriptions/version-2/#section-4
* New: customer facing View Subscription page:
https://docs.woocommerce.com/document/subscriptions/version-2/#section-5
* New: support for PayPal Reference Transactions:
https://docs.woocommerce.com/document/subscriptions/version-2/#section-8
* New: Pending Cancellation status applied to a subscription after it has been
cancelled but the customer or store manager until the prepaid term ends:
https://docs.woocommerce.com/document/subscriptions/version-2/#pending-cancellation
* Tweak: Subscriptions administration list table now includes recurring total,
payment method and all search/sorting features for stores with a large number of
subscriptions: https://docs.woocommerce.com/document/subscriptions/version-2/#list-
table
* Tweak: Improved flow on renewal - create renewal orders before processing the
payment: https://docs.woocommerce.com/document/subscriptions/version-2/#section-7
* Tweak: one end date is now used to refer to the date on which a subscription did
or will expire or was cancelled:
https://docs.woocommerce.com/document/subscriptions/version-2/#one-end-date
* Tweak: the renewal of a cancelled or expired subscription is now called
"Resubscribe" to avoid confusion with normal renewal process:
https://docs.woocommerce.com/document/subscriptions/version-2/#resubscribe-not-
renew

2015.09.29 - version 1.5.31


* Tweak: introduce a new transient lock at the start of PayPal IPN handling to
prevent duplicate IPN handling on sites taking more than a minute to process an IPN
message and set the permanent lock
* Fix: handling of PayPal's
'recurring_payment_suspended_due_to_max_failed_payment' IPN message for
subscriptions purchased with PayPal Standard
* Fix: infinite loop and memory exhaustion when attempting to switch a limited
subscription product

2015.08.28 - version 1.5.30


* Fix: redundant pricing elements in subtotal and cart widget totals
* Fix: never given an additional free trials when renewing a cancelled
subscription
* Fix: always set an end date for the a switched subscription
* Fix: don't copy over download permissions meta from initial order to renewal
order/s

2015.07.28 - version 1.5.29


* Tweak: WooCommerce v2.4 compatibility
* Tweak: improve Javascript show/hide field logic on Edit Product to make it
easier for 3rd party extensions to work with Subscriptions
* Fix: first renewal of synchronised subscriptions that are purchased within 23
hours of the first renewal payment being due
* Fix: fix cart calculations thrown off by a simple product that used to be a
subscription
* Fix: copy multiple meta data values for the same key to renewal orders
* Fix: restrict switching if force http setting is enabled in WooCommerce as
moving from https to http will log the user out. Switching relies on an ownership
check, which will always fail, and will strip the query arguments from switching
making people sign up for new subscriptions instead of switching the one they
already have.
* Fix: manual payment flag being incorrect set on an order initial paid for via a
manual payment method, then changed to "Pending" and paid for via a payment method
that can process automatic renewals

2015.06.10 - version 1.5.28


* Fix: add compatibility for JSON encoded data in the 'custom' field passed to
PayPal being changed in WC 2.3.11 to fix an exploit with serialized data
* Fix: enforce an array with only two values and no objects in the 'custom' field
passed to PayPal to fix an exploit with serialized data
* Fix: only apply the price HTML string if there is a price (i.e. not 0 or empty)

2015.06.01 - version 1.5.27


* Fix: make sure subscriptions that were manual activated and do not have a
corresponding next payment date can not be switched (i.e. upgraded/downgraded) to
ensure proration calculations are correct
* Fix: make sure the next payment date is calculated properly for variable synced
subscriptions.

2015.05.25 - version 1.5.26


* Tweak: remove reference to "free trial" in coupon error message when attempting
to apply a product, cart or sign-up fee coupon to a a synchronised subscription
with no initial payment but no free trial
* Tweak: Use WordPress's SSL verification settings when communicating with PayPal
to change a subscription's status to improve compatibility with Windows and
Yosemite OS X servers
* Fix: make sure coupon error message is displayed when attempting to apply
product, cart or sign-up fee coupon to a synchronised subscription with no initial
payment
* Fix: fix auto-switch process for subscriptions products which are grouped and
limited
* Fix: properly use offset value in $args array sent to
WC_Subscriptions::get_subscriptions()
* Fix: PayPal: set a flag in cases where IPN message arrives before PDT redirect
happens so first renewal IPN messages aren't ignored in this corner case

2015.04.27 - version 1.5.25


* Fix: WordPress 4.2 compatibility issue with post statuses on the Manage
Subscriptions screen
* Fix: incorrectly clearing cache by Action Scheduler

2015.04.21 - version 1.5.24


* Fix: incorrect renewal order created when a customer switches with PayPal, the
switch includes a gap payment and PayPal sends the 'subscr_signup' IPN before the
'subscr_payment' (which only appears to happen on some PayPal accounts)
* Fix: variable subscription product's "From:" price displayed on the shop/product
pages.
* Fix: order totals for renewal order created after a subscription was manually
reactivated by a store manager after a failed payment left it on-hold
* Fix: only variables should be passed by reference error on some PHP
installations when purchasing with PayPal
* Fix: undefined index 'txn_id' notice on PayPal IPN handler for subscription
sign-ups on a switch or subscription with a free trial
* Fix: make sure when initiating auto-switch from a limited subscription product's
page that the newest subscription is switched (not the oldest, in case the customer
has multilpe subscriptions to the same limited product)

2015.04.21 - version 1.5.23


* Fix - Potential XSS with add_query_arg

2015.04.10 - version 1.5.22


* Fix: use of $this in static context error introduced with v1.5.21

2015.04.09 - version 1.5.21


* Fix: notice displayed on limited subscription products that are part of a Group
when not logged in
* Fix: notice displayed on limited subscription products when switching is
disabled completely
* Fix: upgrade process on some servers where site is running on SSL but
$_SERVER['HTTPS'] is not set and server port is something other than the default
SSL port (443), causing WordPress' is_ssl() method to return false (this is fixed
by WooCommerce's fix_server_vars() method, but that runs on the 'after_setup_theme'
hook, while Subscriptions used 'plugins_loaded' for the upgrade process, which
occured prior to it)
* Fix: correctly display the discount string on the Order Received page when a
recurring coupon is applied to the purchase.
* Fix: proration calculations for switching costs when store sets prices tax
inclusive and displays prices including tax
* Fix: proration calculations for switching costs when customer had or is
purchasing multiple quantities of a subscription

2015.03.13 - version 1.5.20


* Fix: shipping line tax row display for renewal orders by ensuring that taxes are
saved for recurring shipping items or derived from the tax on the shipping line
items of the original order if no recurring shipping items are present (for
backward compatibility)

2015.03.03 - version 1.5.19


* Tweak: make sure get_current_screen() function exists to fix compatibility with
any extensions that trigger the 'woocommerce_get_formatted_order_total' hook before
it is loaded
* Tweak: allowing recurring cart coupons to be applied to renewal of an expired of
cancelled subscription (which creates a new subscription)
* Tweak: support recurring line tax data rows
* Fix: do not allow a limited subscription to be switched from the single product
page when switching is disabled on the site or not enabled for that product type
* Fix: after adding a subscription product to the cart, if the customer would not
be redirected to checkout or the cart page, redirect them to whichever page they
added the product from to ensure the cart widget loads correctly
* Fix: cart widget with WC 2.3.2+ when a subscription product is in the cart with
a $0 recurring total
* Fix: line tax row display for automatic renewals orders by ensuring that any
serialized line item meta data is unserialized before adding it to renewal orders,
to avoid it being serialized twice
* Fix: applying cart or product discount coupon to subscription with $0 in
WooCommerce 2.3 via the Checkout page

2015.02.20 - version 1.5.18


* Tweak: Improve compatibility with Dynamic Pricing (by using each subscription
product object's get_price_html() method to build the price string instead of the
generic filters)
* Fix: only apply product and cart coupons to the first payment on a subscription
with WooCommerce 2.3
* Fix: correctly set schedule for subscriptions with an expiration date as soon as
it is purchased rather than waiting until the next payment date is displayed
* Fix: generate renewal orders for PayPal subscriptions created to fix up a
subscription that was suspended previously due to a failed payment

2015.02.02 - version 1.5.17


* WooCommerce 2.3 Compatibility
* Tweak: If the initial order for a synchronised subscription is for $0, mark it
as complete immediately as nothing needs to be shipped
* Tweak: Slight improvement to responsive My Subscriptions table based on
WooCommerce 2.3 styles
* Tweak: do not allow a cancelled or expired subscription with a $0 recurring
total to be renewed as these are most commonly used to charge the total of a
subscription up-front in the sign-up fee and renewals of cancelled/expired
subscriptions do not charge the sign-up fee
* Fix: allow Subscriptions Core to handle renewal orders with a recurring order
amount of $0. This means that the Payment Gateways only be involved in transactions
that exceed the $0 amount.
* Fix: proration of recurring amount when subscription product has Product Addons
- use total cart item's price (including add-ons) for new price rather than
product's price (which doesn't include add-ons)
* Fix: allow subscriptions for 1 payment that also have a free trial to be
cancelled during the free trial (i.e. before the first payment)
* Fix: first payment date for annual or monthly synchronised subscriptions
purchased in the same month that the first payment is due - a bug introduced in
1.5.16

2015.01.09 - version 1.5.16


* Tweak: only auto-complete subscription switch orders if their total is $0 (i.e.
there is no prorating on a physical product)
* Tweak: improve notice regarding purchase of different subscription products in
the same transaction to avoid confusion relating to multiple quantity of the same
subscription product
* Fix: process first payment for a monthly subscription synchronised to the day of
sign up on that day, not one month after sign-up - a bug introduced in 1.5.15
* Fix: set first payment date to end of trial end date when manually adding a
pending subscription with a free trial which the customer then pays for a few days
after it was manually added
* Fix: simple subscription product compatibility with the WooCommerce One Page
Checkout extension's Single Product template changes introduced in v1.1

2014.12.06 - version 1.5.15


* Tweak: include order item names in item name sent to PayPal when purchasing
products with a subscription
* Fix: decode HTML entities in order item names sent to PayPal
* Fix: synchronised renewal date when synhronising a monthly subscription and the
next payment date is in the next year
* Fix: only change payment method to PayPal which switching from another payment
method to PayPal after the IPN has sent a successful subscription signup
notification

2014.11.27 - version 1.5.14


* Tweak: better PayPal logging when unable to change subscription status - include
profile ID, transaction ID or IPN ID
* Tweak: set PayPal PDT flag when manually adding a subscription via the Edit
Order interface so that it doesn't need to be set manually in order for first
payment to be processed
* Tweak: don't display free shipping coupon discount amounts as "-$0 / month"
* Fix: reactivating a subscription after customer has completed payment for a
failed renewal order via PayPal and the failure was on the first renewal and the
store was using PDT at the time of the renewal payment, but was not at the time the
subscription was first created
* Fix: scheduling first payment date for synchronised subscriptions purchased on
the same day they are synchronised too

2014.11.10 - version 1.5.13


* Fix: do not allow customers to switch a subscription where the original order
has not yet been paid.
* Fix: do not return cart subscription details, like trial or length, with
WooCommerce 2.2 when the cart contains a non-subscription product that was
previously a subscription product
* Fix: manual tax calculation from Edit Order screen with WC 2.2 when a shipping
and billing address has not yet been set, but store is set to calculate taxes from
store's base country
* Fix: renew button display on subscriber's My Account page
* Fix: occasional "Warning: strpos(): Empty delimiter in" notice on Orders screen
* Fix: first payment date (and therefore, payment schedule) when switching
subscriptions with PayPal as the payment method and not prorating payment
* Fix: update Action Scheduler to prevent actions with corrupted args
(post_content) blocking execution of subsequent actions
* Fix: synchronise renewal dates to 3am instead of midnight to account for any
changes to the time if the site is set to use a timezone with daylight savings
(e.g. Los Angeles instead of UTC-7)

2014.10.10 - version 1.5.12


* Tweak: add 'customer_changed_subscription_to_suspended' and
'customer_changed_subscription_to_cancelled' hooks
* Tweak: add 'admin_changed_subscription_to_on-hold',
'admin_changed_subscription_to_cancelled' and
'admin_changed_subscription_to_active' hooks
* Tweak: rather than deleting shipping on initial order when there is a free
trial, set it to $0.00 to improve compatibility with extensions like ShipStation
* Tweak: improve performance of SQL when checking if a subscription can be renewed
(as used on My Account page)
* Tweak: add transaction ID to order used to create a subscription
* Fix: switching between simple subscriptions in a grouped product
* Fix: set renewal order status to 'publish' in WC < 2.2 to improve compatibility
with extensions, like ShipStation, on sites still running out-of-date WooCommerce
* Fix: handle payment method updates for payment gateway extensions that do not
post directly from checkout/pay page.
* Fix: handle PayPal IPN messages for the
'recurring_payment_suspended_due_to_max_failed_payment' notification when both the
PayPal Digital Goods extension or another Express Checkout extension and
Subscriptions are active on the site
* Fix: make WC_Subscriptions_Renewal_Order::get_renewal_orders() return orders in
ascending order of date, also fixes "Pay" button on subscriptions for some sites
* Fix: saving order item recurring tax totals on Edit Order screen when
calculating taxes for a manually added subscription item
* Fix: warning about non-static method WC_Subscriptions_Synchroniser::is_today()
&& WC_Subscriptions_Cart::get_formatted_cart_total()
* Fix: when the cart contains a manual renewal for a synchronised subscription, do
not treat it as a synchronised subscription (and display display prorated price
label etc.)
* Fix: when manually making a payment to correct a failed renewal order payment
with PayPal, create a new subscription with PayPal rather than a simple one-off
payment
* Fix: bug in WC_Subscriptions_Cart::get_formatted_cart_total() displaying price
with recurring tax added twice when prices include tax
* Fix: bug where customer's order count and total spent was tripled for initial
subscription orders
* Fix: incorrect $0 initial payment when using a free trial and/or synchronised
subscription and sign up fee equal to recurring total
* Fix: display of checkbox for updating all subscriptions' billing/shipping
addresses with WooCommerce 2.2
2014.09.08 - version 1.5.11
* Fix: cart subtotal displayed in the cart widget and anywhere else populated via
ajax (i.e. WC_Ajax::get_refreshed_fragments())
* Fix: "From:" price for a variable subscription where the lowest priced variation
is on sale
* Fix: fatal error on My Account page when a subscription's meta data was not
correctly saved in the order item meta due to an incorrect reference to a non-
existent class name

2014.09.07 - version 1.5.10


* Tweak: Full WooCommerce 2.2 Compatibility
* Tweak: link to Checkout/Pay page in the email for a failed automatic payment
instead of My Account page
* Tweak: store recurring discount coupons and amounts for display in Subscriptions
2.0
* Tweak: no longer automatically cancel subscription when initial order status is
changed to refunded to allow the subscription to continue even if the initial
amount needs to be refunded (particularly important with WC 2.2)
* Tweak: display PayPal API credential admin notice even when PayPal is not in
debug mode
* Tweak: reword upgrade/downgrade "apportion" settings to the more semantically
accurate "prorate" - props @chrislema
* Fix: only synchronise products when synching is enabled on the store, even if
syncing was enabled and the product was setup to sync but synching has since been
disabled
* Fix: set correct cart contents count, weight, total and tax when cart contains a
subscription
* Fix: require payment when selling a subscription for 1 billing period that has a
free trial or is synchronised to a date in the future
* Fix: when manually adding a subscription, set the initial recurring price to
exclude tax (to match the way a price is added for standard products)
* Fix: when calculating taxes on the Edit Order screen, set the correct
_recurring_line_subtotal_tax and _recurring_line_tax values
* Fix: first payment date of synchronised subscriptions purchased with PayPal

2014.08.14 - version 1.5.9


* Tweak: allow switching from one catch all variation to another, as long as the
chosen attributes differ between the old subscription and the new one
* Tweak: when renewing an expired/cancelled subscription, do not apply original
discounts and coupons - require new coupons to be applied if a discount is being
offered
* Fix: show $0 initial amount on cart totals when applying a product, cart or
sign-up fee coupon to a subscription that does not have a free trial
* Fix: only apply subscription total calculations to parent renewal orders, not
child renewal orders. This prevents a free trial being added to manual renewal
orders.
* Fix: copy the attributes of a catch all variation (i.e. attribute = "any") to
renewal orders
* Fix: extra tax rows displayed by the order details template when tax totals are
displayed as a single total
* Fix: do not allow a new subscription and subscription renewal to be purchased in
the cart at the same time (until 2.0 where multiple subscriptions are supported)
* Fix: synchronise subscriptions manually added to an order and make sure line
total accounts for whether the subscription is synchronised

2014.08.01 - version 1.5.8


* Tweak: improve pointers for new installations
* Tweak: display product/subscription removed notices with blue informational
style instead of red error style
* Tweak: when Mixed Checkout is enabled, honour WooCommerce's "Redirect to cart
page" setting when adding a subscription to a cart which already contains a
subscription (and therefore, is removed)
* Tweak: if a store manager has manually created a subscription to a limited
product but not set a user account on that subscription, make sure other non-logged
in users can still purchase it (i.e. don't limit "Guest" users)
* Tweak: display an admin notice if PayPal Credentials seem incorrect - PayPal
provide no way to verify credentials but if an API request fails due to "Security
header is not valid" it's most likely due to incorrect credentials
* Tweak: display an admin notice if PayPal Profile ID's are using the pre-2009 S-
prefix (and therefore, will not work with the new API)
* Fix: incorrect line totals with non-period decimal separator when manually
adding a subscription with a sign-up fee
* Fix: display correct order totals when purchasing a subscription synchronised to
every n weeks
* Fix: do not include up-front shipping on shipping option price strings when the
cart only contains a synchronised subscription with a first payment date other than
the day of sign-up
* Fix: display sign up fee with tax when the shop's base country is a taxable
country, prices are entered excluding tax but prices should be displayed including
tax
* Fix: the "From:" price on a variable subscription when using tax inclusive
pricing and prices in the shop are displayed including tax
* Fix: display Action Scheduler's admin page when WP_DEBUG is set
* Fix: pre-tax recurring % coupon and sign-up fee % coupon discount amounts
displayed on cart and checkout totals when purchasing more than one of the same
subscription
* Fix: only trigger gateway scheduled subscription payment hook when a recurring
amount needs to be charged - avoids duplicate renewal orders with some gateways
like Stripe which generate a failed renewal order when the amount to charge is $0.
* Fix: do not display switch messages on order received page when paying with
PayPal
* Fix: subscriptions synchronised to a week day on a site using a non-English
locale
* Fix: display of price string for subscriptions synchronised to Sunday each week

2014.07.15 - version 1.5.7


* Tweak: do not display "product deleted" error message when manually renewing a
simple subscription that has since been changed to a variable subscription
* Tweak: when an order to switch a subscription also contains non-subscription
items, do not automatically transition it to completed as those items may need
shipping
* Fix: update Action Scheduler to work around issues when using ALTERNATE_WP_CRON
* Fix: format recurring order total using WC 2.1 API functions to handle non-
period decimal separators (e.g. ',')
* Fix: initial payment on synchronised subscriptions when there is no sign-up fee
* Fix: allow product and cart coupons to be applied to the cart when it contains
products and a subscription with a free trial

2014.07.04 - version 1.5.6


* Tweak: add support for switching subscription products that include Product
Addons
* Tweak: when calculating next payment date, add additional safeguard against
calculating a date for a subscription for 1 billing period
* Fix: when a manual renewal order has been automatically cancelled by
WooCommerce, do not allow the customer to reactive the associated subscription from
their My Account page
* Fix: compatibility with WooCommerce Additional Fees plugin
* Fix: format renewal order tax totals using WC 2.1 API functions to handle non-
period decimal separators (e.g. ',')

2014.06.24 - version 1.5.5


* Fix: handle the PayPal Express Checkout
'recurring_payment_suspended_due_to_max_failed_payment' IPN message because PayPal
sends it for subscriptions created with PayPal Standard in lieu of any other
payment failure notification.
* Fix: synchronised payment date displayed on an order or the cart's totals for
subscriptions that have no sign-up fee and are synchronised to the last day of the
month (i.e. display "on last day of each month" not "on the 28th of each month").
* Fix: first payment date for synchronised subscription variations
* Fix: recurring & sign-up fee coupons
* Fix: only apply recurring % discount coupons to recurring component of initial
payment (i.e. do not apply the % discount to simple/variable products too)
* Fix: manual subscription renewals on subscriptions limited to "any status"
* Fix: do not add Product Addons prices twice when renewing an expired or
cancelled subscription

2014.06.12 - version 1.5.4


* New: 'processed_subscription_renewal_payment' and
'woocommerce_renewal_order_payment_complete' hooks
* Tweak: allow store managers to limit a subscription to only one active
subscription rather than just limiting regardless of status
* Tweak: improve shipping price displayed in the order totals table after checkout
and via the My Account page when the order includes recurring shipping
* Tweak: when changing payment method, log the payment method's ID if its title is
empty
* Tweak: show the "Renew" button on a product's page if a customer has a limited
subscription that is cancelled or expired
* Tweak: if a customer has an active subscription to a subscription product
limited to one per customer, display a notice on the product's page
* Tweak: do not display limited subscription's "product removed from cart" notice
when on checkout complete page for PayPal
* Tweak: accept a status of "any" in the
WC_Subscriptions_Manager::user_has_subscription() function
* Tweak: group subscription pricing options in the Bulk Edit select box on the
Edit Product screen for variable products
* Fix: if using a blank payment method title, display "" on the Edit Order screen,
not "Manual"
* Fix: allow subscription products with an active subscription to be restored from
the trash (but not permanently deleted)
* Fix: display recurring totals correctly on the Edit Order screen on sites using
a locale with a decimal separator other than '.' (e.g. ',')
* Fix: do not carry switch related meta data to renewal orders - prevents renewal
orders being marked as completed immediately
* Fix: do not charge shipping up-front when purchasing a virtual non-subscription
product in the same transaction as a physical subscription product
* Fix: split recurring shipping taxes are split from recurring sales tax
* Fix: switching subscriptions using a payment gateway which does not call the
payment complete function
* Fix: send correct initial payment to PayPal when purchasing products at the same
time as a subscription that has a free trial
* Fix: MySQL notice on Manage Subscriptions screen on servers with MySQL 5.6 or
newer
* Fix: only allow subscription renewal or switching of limited subscriptions when
cart contains matching product ID

2014.05.28 - version 1.5.3


* Tweak: add classes to synchronised subscription product and order first payment
dates so they can be hidden or styled
* Tweak: let WC Core JS handle show/hide of a simple subscription's pricing fields
on the Edit Product page and add 'woocommerce_subscription_product_types' filter to
make it possible for other product types to use these fields
* Tweak: pass full subscription array and order item to callbacks on the
'subscription_deleted' hook so callbacks can access the subscription's details
* Fix: apportion totals correctly when upgrading a subscription that is for 1
billing period (e.g. "$19 for 1 month" not "$19 / month") or in the last billing
period for its term (e.g. month 12 of a "$19 / month for 12 months" subscription)
* Fix: charge shipping if purchasing physical products with a subscription even if
there is a free trial
* Fix: display correct shipping method labels when recurring shipping price
differs to initial shipping price for that method
* Fix: do not allow subscription products to be deleted when they have been
purchased and the site is using a custom database prefix by fixing use of a
hardcoded prefix in a query to count the active subscriptions for a product
* Fix: if a subscription is synchronised to the 27th day of the month, synchronise
payments to that day not the last day of the month.
* Fix: send correct initial payment (sign-up fee) to PayPal when purchasing a
synchronised subscription where the sign-up fee is the same as the recurring amount
* Fix: if a subscription was purchased with standard products, do not include the
totals of the standard products in the sign-up fee value for the subscription
* Fix: add workaround for MySQL error "The SELECT would examine more than
MAX_JOIN_SIZE rows" that occurs on some hosts (when subscriptions become a custom
post type in v2.0 it will more effectively address the error)

2014.05.19 - version 1.5.2


* Tweak: if a non-supported version of WooCommerce is active (i.e. a version prior
to 2.1), do not load Subscriptions and display a notice to update WooCommerce
* Tweak: add update paths from Subscriptions version 1.1, 1.2 and 1.3 to version
1.5 (previously only version 1.4 to 1.5 was supported)
* Tweak: improve the notice displayed on checkout when no gateways are available
that support subscriptions
* Tweak: store a record of the version installed before running an update
* Tweak: make the row titles on the responsive My Subscriptions table translatable
(by adding a data attribute on the table cells and passing it to the CSS psuedo
element's content)
* Fix: update .pot file for translation
* Fix: do not charge shipping up-front on subscriptions with a free trial or
synchronised to a date in the future
* Fix: do not charge shipping on recurring items when purchasing a virtual
subscription with physical products
* Fix: display correct shipping total when no recurring shipping is being charged
* Fix: make sure the variable subscription product type is registered on new
installs
* Fix: IPN handling when purchasing synchronised subscriptions with PayPal
* Fix: invalid callback error in WC_PayPal_Standard_Subscriptions - not affecting
any functionality
* Fix: numeral suffix for numbers higher than 20 (e.g. 21st not 21th)

2014.05.13 - version 1.5.1


* Tweak: add span element around subscription price strings for custom pricing
* Tweak: don't create redundant scheduled action when successfully processing an
automatic scheduled renewal
* Fix: prevent a switch request from being processed by or being added to the cart
of a customer who does not own the original subscription
* Fix: when saving a Variable Subscription product before variations are added,
don't throw a "Warning: array_keys(): The first argument should be an array"
notice.
* Fix: make sure the "Used for variations" checkbox is visible when adding a
custom attribute to a new Variable Subscription product

2014.05.05 - version 1.5


* Requires: WooCommerce 2.1 or newer and Subscriptions 1.4 or newer (if upgrading)
* New: a subscription can now be purchased in the same transaction as other
products.
* New: subscriptions can be purchased in multiple quantities rather than having to
be purchased individually
* New: subscription renewal dates can now be synced to a specific day of the week,
month or year
* New: support for the Points & Rewards extension: points will now be rewarded for
subscription renewals
* New: completely new scheduler capable of scaling to hundreds of thousands of
subscriptions & processing queues of thousands of simultaneous renewals
* New: filter orders on the Orders administration screen to show only renewal
orders (for any subscription) or only original orders i.e. those orders that are
not automatically generated to record a subscription renewal
* New: subscription switched email to notify store managers when a customer
upgrades/downgrades their subscription (replaces the standard WooCommerce New Order
email for subscription switches)
* New: subscription switch email sent to customers when upgrading or downgrading a
subscription (replaces the standard WooCommerce Order Complete and Processing Order
emails for subscription switches)
* New: added a filter for customising column content on the Manage Subscriptions
administration screen (filter's hook name is
'woocommerce_subscriptions_list_table_column_content')
* Tweak: the order created to record a subscription switch is now transitioned to
"completed" status regardless of whether the subscription needs to be switched or
not because the order is simply a record of the switch and not indicative of an
item needing to be shipped
* Tweak: the My Subscriptions section of the My Account page is now responsive
* Tweak: move sign-up fee field to own row on the Edit Product screen to improve
display on small screens
* Tweak: when asked what type of product they are, variable subscriptions and
subscription variations will now identify as both the subscription and standard
equivalent (e.g. if a variable subscription is asked if it is a variable product,
it will say yes, if a subscription variation is asked if it is a standard
variation, it will say yes).
* Tweak: in API responses, include variable subscriptions' children & subscription
variations' parent objects (due to tweak in variable/variation self-identification
above)
* Tweak: limit subscription regardless of status to prevent the same customer
account effectively being able to access more than one free trial period. More:
http://docs.woocommerce.com/document/subscriptions/store-manager-guide/#limit-
subscription
* Tweak: only allow customers to purchase subscriptions with PayPal once the
store's API credentials are entered
* Tweak: prefill "Change" next payment date fields with date in site's timezone
instead of next payment date in GMT/UTC timezone
* Fix: fix stock management for variable subscriptions (due to the tweak above
making variable subscriptions identify as variable products)
* Fix: edit product links on Reports page for subscription variations (due to the
tweak above making subscription variations identify as standard variations)
* Fix: assorted fixes for data returned by API about subscriptions products (due
to the tweak above making subscription variations identify as standard variations)
* Fix: product meta section is only printed on the My Subscriptions table if the
product has meta data (i.e. don't include an empty <div>)
* Fix: when changing the customer on an order, make sure that all payment, trial &
expiration dates are updated to prevent scheduling duplicate hooks (and potentially
causing duplicate payments)
* Fix: display correct cart subtotal in cart widget to customer that has not yet
visited the cart or checkout page (forces full total calculation whenever the cart
contains a subscription product)
* Fix: incorrect next payment date when changing payment method to PayPal or
switching subscriptions using PayPal as the payment method
* Fix: display the price suffix on variable subscriptions when a custom suffix is
set under "WooCommerce > Settings > Tax"
* Fix: do not require payment for subscriptions for 1 billing period (e.g. $10 for
1 year) when a product or cart coupon has been applied for 100% of the initial
amount

2014.04.09 - version 1.4.10


* Tweak: Do not add the "Payment received" order note when a subscription has a
free trial and no sign-up fee, instead display "Payment authorized" for
subscriptions using automatic recurring payments and "Free trial commenced" for
those using manual renewals
* Tweak: On the Manage Subscriptions screen, do not display the subscription sign-
up date in the "Last Payment" column if the subscription has a free trial and no
sign-up fee (as there was no actual payment made)
* Tweak: Reinstate enctype='multipart/form-data' on the subscription add to cart
form to fix compatibilty with file uploads via Product Addons extension (related to
http://docs.woocommerce.com/document/subscriptions/faq/#section-45)
* Tweak: Only output P tags for product meta on My Subscriptions table when
product has meta
* Tweak: add enable/disable field for the Customer Renewal Invoice email
* Fix: set correct order date and ID in renewal order emails' subject & heading
when sending more than one email in the same request (workaround until
woocommerce/woocommerce#5168 is implemented in WC 2.2)
* Fix: correctly close P tag when display product meta data on the My
Subscriptions table
* Fix: display correct tax and shipping total on cart page when using Local Pickup
shipping method and estimating shipping with the "Calculate Shipping" method
* Fix: display correct tax string when the "Display Tax Totals" setting is set to
"As a single total" - requires new 'woocommerce_cart_totals_taxes_total_html'
filter introduced with WC 2.1. See woocommerce/woocommerce#5184 for details.
* Fix: capitalise custom attribute names in the product meta section of the My
Subscriptions table
* Fix: allow standard products variations to be deleted (but still prevent
subscription variations from being permanently deleted)
* Fix: Maximum execution time error when attempting to switch from a paid
subscription to a free subscription
* Fix: Include billing period on a variable subscription's price when one
variation is free (e.g. "From: $0.00 / month" instead of "$0.00 - $10.00")
* Fix: fix potential warnings on Manage Subscriptions admin screen when ordering
by next payment date (caused by get_all_users_subscriptions() treating fee line
items as product line items)
* Fix: don't duplicate renewal orders for subscriptions with a sign-up fee, but $0
recurring total and using a manual renewal method (or when automatic payments are
disabled)
* Fix: move .pot file into /languages/ directory

2014.03.12 - version 1.4.9


* Tweak: display each payment gateway's automatic payment support on the checkout
settings tab of WooCommerce 2.1
* Tweak: when removing a subscription variation, trash it instead of permanently
deleting it to prevent issues with renewal
* Tweak: prevent subscription products from being permanently deleted, either by
store manager or WordPress auto-purge. Deleting subscription products causes
assorted issues with WooCommerce core and other plugins/themes as they often expect
the product to still exist. All subscription products can still be trashed, but
only subscription products not associated with an order (i.e. that have not been
purchased) can be deleted.
* Tweak: when attempting to manually renew a subscription for a product which has
been deleted, throw a notice if the corresponding product has been deleted
* Tweak: do not display the "Renew" button on the My Subscriptions table if the
corresponding subscription product has been permanently deleted.
* Tweak: warn store manager when deleting a user that it will remove them from any
subscriptions
* Tweak: include subscription price string for any additional fees on an order to
make it clear to the customer they are added for each billing period
* Tweak: improve recurring discount string for WC 2.1 (e.g. show "-$100 / week"
not "-$100 now then $100 / week")
* Tweak: more concise subscription price string for taxes, discounts and fees by
removing trial period unless the first payment is free
* Fix: Searching subscriptions by user details on the Manage Subscriptions table
* Fix: making a payment for a failed renewal order in WC 2.1
* Fix: assorted renewal via checkout notices in WC 2.1
* Fix: update change payment method template to ensure submit button has correct
text with WC 2.1
* Fix: don't link a subscription's title to the product's page on the "My
Subscriptions" table if the product has been deleted
* Fix: don't display price range for Variable Subscription's "From" price in WC
2.1 (because it doesn't make sense for prices on different billing periods)
* Fix: do not duplicate order fees
* Fix: do not apply order item fees to free trial period
* Fix: workaround assorted WPML bugs with variable subscription products, like a
"-1 variation trial length", when using the "Edit Product" screen as the Product
Translation Interface
* Fix: use WC 2.1's order currency API to display currency at time of placing
order rather than currency currently used on the store
* Fix: when using PayPal's PDT and IPN, do not create a duplicate order on
subscription sign-up

2014.02.13 - version 1.4.8


* Tweak: remove support for WooCommerce versions prior to 2.0 (i.e. 1.x)
* Tweak: add new 'woocommerce_subscriptions_renewal_order_item_name' filter
* Tweak: don't display recurring payment method on My Subscriptions table when
subscription uses manual renewals
* Tweak: improve subscription price field styles on Edit Product page for WC 2.1
* Fix: ordering subscriptions by start, expiration or end date on the Manage
Subscriptions screen
* Fix: changing payment method in WooCommerce versions before 2.1
* Fix: add new recurring shipping items correctly on the Edit Order screen in WC
2.1 instead of adding it as a 'shipping' row
* Fix: update order item shipping meta (i.e. method & cost) on the Edit Order
screen in WC 2.1 instead of adding new meta rows
* Fix: set renewal order taxes to those calculated at the time of checkout when
renewing a subscription via checkout, either due to manual payments or payment in
lieu of failed automatic renewal payment
* Fix: set fees on renewal orders if a fee is added to a renewal order when
renewing a subscription via checkout, either due to manual payments or payment in
lieu of failed automatic renewal payment
* Fix: set correct renewal order shipping line items in WC 2.1
* Fix: display correct recurring shipping total in WC 2.1 on the Edit Order screen
for orders created pre-WC 2.1
* Fix: correctly update recurring shipping items in WC 2.1 when saving the Edit
Order screen for orders created pre-WC 2.1
* Fix: prefill recurring payment method (as manual) when manually adding a
subscription via the Edit Order screen
* Fix: display account creation fields in WC 2.1 when cart contains a subscription
and guest checkout is enabled
* Fix: display correct recurring shipping amount on orders with WC 2.1 when there
is a free trial
* Fix: subscription length sent to PayPal with WC 2.1

2014.01.29 - version 1.4.7


* Fix: Fatal error "Call to undefined function woocommerce_round_tax_total()" when
saving an order on the Edit Order screen with no value set for recurring tax and
recurring shipping tax

2014.01.21 - version 1.4.6


* Tweak: Full WooCommerce 2.1 compatibility
* Tweak: If a subscriber visits a variable subscription's page, and that
subscription is limited to one per customer, and the customer has an active
subscription, automatically initiate the switch process.
* Tweak: Display subscription's address not default address when changing a single
subscription's address (requires on WooCommerce 2.1)
* Tweak: Add new 'woocommerce_subscriptions_pre_update_recurring_payment_method'
hook
* Fix: When customer is changing payment method, cancel subscription with PayPal
only after the customer has completed the sign-up (not when initiating the payment
method change)
* Fix: Display sale price field on the Edit Product screen for both variable
products & variable subscription products when Stock Management is disabled (was
previously hidden erroneously)
* Fix: Variable subscription "From:" price when a variation has the same initial
price, made up of of a free trial and sign-up fee, but a different recurring price
on the same billing period.
* Fix: Colspan for variation's subscription pricing fields on the Edit Product
page when Stock Management is enabled.
* Fix: "Notice: Trying to get property of non-object" when searching by user name
for a user which doesn't exist
* Fix: don't expire a subscription when a PayPal EOT notification comes through
for a subscription that has already been cancelled
* Fix: don't expire a subscription when the recurring payment method has been
changed from one PayPal account to another PayPal account
* Fix: make sure when changing the payment method on a subscription that all
payment gateways have been initialised before attempting to cancel the subscription
with the current payment gateway (to make sure the subscription is correctly
cancelled)
* Fix: don't include Subscription Information in new order email unless that admin
option is checked (it is off by default)
* Fix: make sure recurring discounts applied before tax are correctly applied to
manual renewals and manul renewal of a failed automatic payment
* Fix: Add PayPal IPN transaction ID check for those transactions which have an
'txn_id' field to further try and prevent duplicate IPN handling
* Fix: Ignore PayPal's 'subscr_eot' IPN message completely. It is incorrectly
documented and leads to assorted bugs when appearing at unexpected times, like
immediately for subscriptions of only one payment, at the same time as the last
payment and when a subscription is cancelled due to failed payments. Subscriptions
internal scheduleding is now used exclusively for expiring a subscription and it's
failed payment handling is used whenever a subscription payment fails.

2013.12.13 - version 1.4.5


* Tweak: Add bulk suspension, cancellation and reactivation options to the Manage
Subscriptions screen - just in time for the holidays.
* Tweak: Apply the 'woocommerce_order_again_cart_item_data' filter when renewing a
cancelled/expired subscription to carry over order item meta from extensions like
Gravity Forms Addons
* Tweak: New option to display subscription start & end date in new order email
(on by default), customisable via the /emails/subscription-info.php template.
* Tweak: Log subscription activation after setting subscription schedules to help
diagnose issues with scheduling next payment, expiration date & trial end date.
* Tweak: First pass at WooCommerce 2.1 compatibility.
* Tweak: Display "When Cancelled" on the My Subscriptions table's "End Date"
column for active subscriptions with no expiration.
* Tweak: Display staging/live mode in the system status report.
* Tweak: Use a subscription length string that is easier to translate - i.e. "1
year" instead of "%s %s"
* Tweak: When getting the next payment date for a subscription, reschedule the
next payment if it has been dropped. Allows for automatic repair of dropped next
payment dates by visiting the Manage Subscriptions screen.
* Fix: When manually adding a variable subscription product to the cart, set the
line subtotal/total to be the variation's total.
* Fix: only apply subscription coupons to subscription products even if custom
code is allowing products + subscriptions in the cart.
* Fix: correctly add subscription variation meta data to order, not variable
subscription meta data, when manually adding a subscription.
* Fix: make sure fees are never added more than once. Fixes integration with
Payment Gateway based Fees extension.
* Fix: don't block the order's initial tax row when adding a recurring tax row on
the Edit Order screen.
* Fix: in the My Subscriptions table, display the order item's meta data, not the
meta data on the order item's products. Means that when order item meta data is
changed, the correct meta is shown in the My Subscriptions table.

2013.11.26 - version 1.4.4


* Tweak: reinstate Subscription Search on the Manage Subscriptions screen for
stores with less than a few thousand subscriptions
* Tweak: don't send subscription related emails on staging sites
* Tweak: only load WooCommerce & Subscriptions admin CSS on WooCommerce &
Subscriptions administration screens
* Tweak: massive performance improvement for get_all_users_subscriptions()
function (used on Customer Report page). Props Ken Bass (www.kenbass.com) & Chuck
Mac (www.chuckmac.info).
* Tweak: the "Suspend" button is no longer displayed on a store manager's My
Account page when 0 suspensions are allowed, to avoid confusion (store managers can
always suspend subscriptions from the Manage Subscriptions screen)
* Tweak: include whether WCS_DEBUG mode is enabled in the WooCommerce System
Status report.
* Tweak: use a string literal text domain for translation plugins which don't
support variable text domains, like the latest version of WPML
* Tweak: try to align next payment dates with PayPal's schedule by update the next
payment date time whenever PayPal processes a payment
* Tweak: reduce hidden meta data included on the Manage Subscriptions screen to
improve load time and provide cleaner search/filter URLs
* Tweak: new 'woocommerce_subscription_lengths' filter for custom subscription
lengths: http://docs.woocommerce.com/document/subscriptions/faq/#section-57
* Tweak: add related order links to the Edit Order screen for renewal orders of
cancelled/expired subscriptions
* Fix: only load email classes once in case something is destroying and then
reinitiating the Woocommerce::woocommerce_mailer property
* Fix: only set recurring payment method meta data when an order is marked as
completed for those orders that contain a subscription
* Fix: switching subscriptions without apportioning sign-up fees
* Fix: allow switching between variations of a variable subscription that is
limited to one per customer
* Fix: fix next payment date displayed for Subscriptions purchased with PayPal
that include a free trial and have their first payment processed after the free
trial had ended
* Fix: prevent 'Request-URI Too Large' errors on the Manage Subscriptions page for
some servers when using the customer, product and/or page filters
* Fix: set subscriptions manually added via the Edit Order screen to use the
Manual Renewal process
* Fix: display correct next payment date for the first payment on a switched
subscription where the store manger has changed the next payment date

2013.10.22 - version 1.4.3


* Tweak: add a work around to support selling subscriptions with a $0 recurring
total via PayPal
* Tweak: more specific PayPal notice about changing Receiver Email on the PayPal
settings page
* Tweak: set a subscription's start date based on the date payment was completed
rather than date the order was originally placed
* Tweak: update subscription add to cart template to use a hidden field for the
product ID, matching changes in WooCommerce 2.0.15 to work with plugins like Quick
View
* Tweak: speed up Manage Subscriptions page load slightly when viewing all
subscriptions with no customer/product filters
* Tweak: memory usage improvement by no longer autoloading cron locks
* Tweak: when getting the next payment date, don't fall back to calculate it when
the completed payment count >= subscription length (speeds up My Account page &
Manage Subscriptions screen)
* Fix: use new 'woocommerce_order_needs_payment' in WC > 2.0.16 to require a
payment method be set on orders with a free trial (and therefore, $0 order total)
* Fix: set correct recurring payment method when paying for a previously placed
order using
* Fix: display correct recurring payment gateway name in warning dialog on the
Edit Order screen when the recurring payment method is different to the original
order's payment method
* Fix: when a user has no subscriptions, link to the store on user's account page
instead of linking to the user's account page.
* Fix: don't include trashed subscriptions in subscription count and pagination
when viewing "all" subscriptions on the Manage Subscriptions page
* Fix: call correct 'woocommerce_subscription_completed_payment_count' filter (was
using 'woocommerce_subscription_failed_payment_count' hook)
* Fix: set correct first payment date when downgrading a subscription

2013.10.01 - version 1.4.2


* Tweak: improve performance for My Account page.
* Tweak: improve the Customer Renewal Invoice email template used when an
automatic renewal order failed. Now includes information about the failed payment
and a link to My Account page to complete payment.
* Tweak: handle PayPal IPN requests for subscriptions created with different
systems by requiring only the 'subscr_id' value, not the 'invoice' & 'custom'
PayPal IPN values (which would be different or not exist for subscriptions created
with another system).
* Fix: variable subscription "From:" price when a variable has the same initial
price but a longer billing period.
* Fix: update staging site lock to prevent duplicate payments for staging sites
created with WP Engine.
* Fix: send Customer Renewal Invoice email when automatic renewal payment failed.
* Fix: "The requested URL's length exceeds the capacity limit for this server"
error that occurs on some servers when filtering or modifying orders on the Orders
administration screen.
* Fix: always show store managers a warning when trashing an order for a
subscription via the Orders administration screen.

2013.09.25 - version 1.4.1


* Fix: renewal of cancelled subscriptions from the "My Account" page
* Fix: display subscriptions created as a renewal in the customer's "My
Subscriptions" table
* Fix: don't display "Change Payment Method" button on the "My Subscriptions"
table unless at least one payment gateway on the site supports the payment method
being changed.
* Fix: don't display "Change Payment Method" button on the "Checkout -> Pay" form
unless at least one payment gateway on the site supports the payment method being
changed.
* Fix: error message displayed when no payment gateways are available to change
the payment method.

2013.09.20 - version 1.4


* New: "Switch" subscriptions feature to allow customers to upgrade/downgrade
their subscription: http://docs.woocommerce.com/document/subscriptions/switching-
guide/
* New: The payment method used for automatic recurring payments can now be changed
by subscribers: http://docs.woocommerce.com/document/subscriptions/customers-view/
#section-5
* New: Database structure for subscriptions to improve performance on all sites
and fix memory exhaustion issues on sites with tens of thousands of subscriptions.
Subscription meta data is now stored in order meta not user meta.
* New: The recurring shipping method, title, tax and total used for renewals can
now be changed by store managers from the 'Edit Order' page of the original order
used to purchase the subscription (for those payment gateways which support
changing recurring amounts).
* New: Renewal order emails: using the WooCommerce email system for renewal orders
so they can be enabled/disabled, and the content/templates can be customised.
* New: "Cancelled Subscription" email sent to store managers.
* New: 'get_subscriptions()' function to help developers easily access and filter
customer's subscriptions.
* New: 'woocommerce_subscriptions_update_users_role' filter to allow extensions to
prevent Subscriptions from handling user roles.
* New: Subscription status, status/end/expiration dates, completed payment list
and other meta data can now be changed via the order item meta UI on the Edit Order
screen when the WCS_DEBUG constant is set to true.
* Tweak: Order totals are now $0 when signing up for a subscription with a free
trial period making revenue reporting more accurate. Totals on all existing orders
will be changed when upgrading.
* Tweak: On the customer "My Subscriptions" table, show "End Date" column, instead
of "Expiration". This column now includes the end date for cancelled/switched
subscriptions, or the end of prepaid term date if a cancelled subscription is still
within a prepaid term.
* Tweak: The payment method used for recurring payments is now displayed on the
customer's My Subscriptions table (if there are future payments scheduled)
* Tweak: Allow template overrides of the
/single-product/add-to-cart/subscription.php template
* Tweak: If the WooCommerce "Hold Stock" setting is at the default 60 minutes,
Subscriptions will change it to 1 week on upgrade. This avoids the possibility of
subscriptions being cancelled when a manual renewal payment is due or when payment
takes longer than 60 minutes, like it does when using a PayPal eCheck.
* Tweak: If a subscription is cancelled without payment, don't allow for it to be
renewed (to avoid circumventing sign-up fees)
* Tweak: The Subscriptions shortcode now includes variation data
* Tweak: Use WooCommerce date format instead of default WordPress date format
* Tweak: Reduce memory usage by no longer loading every payment gateway on every
page request just to access PayPal's settings
* Tweak: A subscription is now cancelled with PayPal after a failed payment,
rather than allowing PayPal to retry the failed payment n times every 5 days. This
allows for Subscriptions to handle the failure, meaning it can immediately suspend
the subscription and the customer can log in to pay for the renewal.
* Fix: Display correct default settings
* Fix: If a subscription is cancelled before being paid for, don't show the "Pay"
button next to it on the My Subscriptions table
* Fix: When using a sign-up fee equal to the recurring fee, and a free trial, make
sure the correct amount is sent to PayPal
* Fix: For variable subscription products with no variations, fix the price string
(should be "-" not " / day").
* Fix: Don't assign the deafult inactive role to a subscriber when one
subscription is cancelled/expires, but they have other active subscriptions
* Fix: Incorrectly charging a second payment for subscription variations that were
meant to be for 1 billing period
* Fix: Incorrectly set trial expiration dates for subscription variations which
have different trial expirations
* Fix: Line totals when adding a subscription product with a free trial and/or
sign-up fee via the Edit Order screen

2013.08.15 - version 1.3.11


* When a subscription payment is due on the 29th or 30th day of February (i.e. it
is normally charged on the 29th or 30th day of the month, and the next billing
month is February) charge on the last day of February instead. More details:
http://docs.woocommerce.com/document/subscriptions/faq/#section-16
* Trial and subscription expiration dates now match payment dates by using the
last day of the month instead of PHP's strtotime() month addition
* Fix Variable Subscription prices when not all variations have a sale price or
sign-up fee
* Fix duplicate payment bug where a 2nd payment was charged (n - 1) hours after
the first for the payment immediately following a free trial when the next payment
date was changed for a subscription with a free trial that was manually added to
the site on sites using a timezone of UTC -n

2013.08.08 - version 1.3.10


* WP 3.6 PHP Strict Notice fixes
* On renewal orders, use the WC_Product->get_title() method to make sure product
name goes through the 'woocommerce_product_title' filter
* Only display subscription meta bulk edit options on Variable Subscriptions (not
Variable products)
* Fix incorrect suspension bug on IPN payments from PayPal when not using manual
renewal payments
* Fix variation_id & product_id for Variable Subscriptions on the renewal order of
an expired/cancelled subscription

2013.08.07 - version 1.3.9


* Handle bulk edit of sale prices & percentage increase or decrease of a simple
subscription's regular price or sale price
* When automatic payments are switched off, and therefore, the subscription will
be using manual payments, payment details (e.g. credit card details) are no longer
required when purchasing a subscription with $0 due up front
* Fix bug where subscriptions purchased with PayPal and 'automatic payments'
switch off were not suspended when renewal was due
* Fix subscription price string when initial discount is applied to a subscription
for only 1 billing period (e.g. $10 for 1 month)
* Fix strict notice: "Strict Standards: Declaration of
WC_Product_Subscription_Variation::get_price_html() should be compatible with
WC_Product::get_price_html($price = '')"
* Fix the transfer of a subscription variation's attributes when it is manually
renewed via checkout
* Fix saving a product when switching between simple and variable subscription
while keeping variations associated with the subscription
* Fix display of sale prices on subscription variations

2013.07.25 - version 1.3.8


* When a user is deleted from WordPress (or a WordPress network) cancel their
subscriptions with the payment gateway
* New safeguard against duplicate payments from staging sites
* Only display admin notices to users who have the capability to remedy the notice
* Fix bug when calling user_has_subscription() without a status (this bug was also
affecting the change address functionality)
* Fix bug where customer still needed to provide a payment method when applying a
recurring coupon equal to 100% of a subscription to a subscription with a free
trial period
* Fix coupon bug where combining product discount and recurring discount allowed a
total less than 0.
* Fix bug where a payment method was not set when a coupon discounted the initial
payment to $0 but there were still recurring amounts to be paid.
* Fix cornercase fatal error where is_woocommerce_active() is not defined because
woothemes_queue_update() is being defined without also defining
is_woocommerce_active()

2013.07.12 - version 1.3.7


* Display "From: " on a variable product's price when it has different billing
schedule but same price
* Display sign up fee and subscription length on variable products "From:" price
* Account for free trials and sign up fees when calculating the cheapest possible
variation in a variable subscription
* Fix PayPal bug with coupons for first payment only

2013.07.05 - version 1.3.6


* New Recurring % Discount and Sign-up Fee % Discount coupons
* Set subscription coupon discount amounts in cart meta data
* New HTML5 elements for price fields on Edit Product page (adds validation so a
string like $5 will no longer validate as a price)
* Improve validation of pricing fields for subscription products
* Improve layout of variable subscription pricing fields on small screens
* Fix bug where price was not displayed for a subscription variation when all
prices were equal, but billing periods were not.
* Fix carry over of deprecated 'role' param on
WC_Subscriptions_Renewal_Order::is_renewal()
* Fix tax total displayed on orders when recurring tax total is the same as
initial tax total (e.g. display "$2 / month" not "$2 up front then $2 / month")
* Fix bug where shipping was not added to first payment for subscriptions with a
sign-up fee and no free trial
* Fix bug where recurring coupons were not discounting the first payment for
subscriptions with a sign-up fee and no free trial
* Fix bug applying discount coupons twice to manual renewals and renewal of a
failed automatic payment

2013.06.24 - version 1.3.5


* Coupon Behaviour Change: due to popular demand, WooCommerce's Product and Cart
coupons now discount only the first payment. This also improves compatibility with
the Point & Rewards and Gift Certificate extensions. More details:
http://docs.woocommerce.com/document/faq/#section-4
* Add new 'WCS_DEBUG' mode to make it easier to test renewal payments. More
details: https://docs.woocommerce.com/document/testing-subscription-renewal-
payments/
* Add new option to limit a subscription product to one active subscription per
customer
* Update translation files (pot file)
* Hide redundant "Sold Individually" checkbox on "Edit Product" screen
(subscriptions can only be purchased individually)
* Display required "*" next to account fields when a subscription is in the cart
* New $status parameter for WC_Subscriptions_Manager::user_has_subscription()
* Fix incorrect payment date times when another plugin is behaving badly and
calling date_default_timezone_set() to set timezone to something other than
WordPress default - UTC
* Fix activation issue (500 error) for first time activation on sites with a large
number of existing users
* Fix bug in variable subscription price string for those variable subscription
products which were once simple subscriptions
* Fix tax price string displayed for WC 2.0.6+
* Fix tax inclusive shipping prices displayed on an order after it has been placed
* Fix bulk trash action on the Manage Subscriptions page

2013.06.06 - version 1.3.4


* Fix subscription string when not charging a recurring payment but including a
sign-up fee (e.g. display $0 / month with a $20 sign-up fee instead of "Free!")
* Fix the "From:" price displayed on a Grouped product which contains a
subscription which has a $0 recurring amount but a sign-up fee
* Fix hardcoded DB table name in upgrade process to version 1.3.

2013.05.13 - version 1.3.3


* Use a translation safe admin page screen ID to fix issues with WooCommerce
Branding extension
* Fix automatic renewal order emails sent for orders transitioning straight to
completed even when email notification off
* Fix PHP warning "'WC_Product_Variable_Subscription' does not have a method
'get_sign_up_fee'" when renewing a Variable Subscription product
* Fix incorrect subscription billing interval for subscriptions started on the
last day of the month for an interval greater than one
* Fix PayPal IPN transaction ID bug preventing some sign-ups from being handled
correctly
* Fix a variable subscription's "From:" price billing interval when all variations
have an interval different to 1

2013.04.19 - version 1.3.2


* Change active subscription cancellation behaviour - now when cancelling a
subscription, the subscriber's role is changed at the end of the prepaid term
(instead of as soon as they cancel their subscription)
* Add safeguard against duplicate PayPal IPN requests triggering duplciate renewal
orders & renewal order emails
* Fix Manage Subscriptions page filter for variable subscription products
* Fix sign-up fee currency symbol - was not being shown, now it is
* Fix renewal payment handling for free subscriptions (i.e. those with a renewal
payment amount of $0.00)
* Fix PayPal configuration notice when PayPal is unusable (because the store's
currency isn't supported)
* Fix bug in paying for non-renewal orders via the "Pay" link sent via email

2013.03.26 - version 1.3.1


* Add screen options pane to Manage Subscriptions admin page to show/hide columns
& set number of subscriptions to display
* Add product filter to Manage Subscriptions admin page
* Add customer filter to Manage Subscriptions admin page
* Fix incorrect cancellation of subscriptions purchased with PayPal for one
billing period that has an interval other than 1 (e.g. $5 for 2 months)
* Fix PayPal IPN handling with WooCommerce 2.0.4, which no longer strips slashes
in $_POST
* Make the text on the add to cart & place order buttons available for translation
on multilingual sites using WPML

2013.03.15 - version 1.3


* Requires WooCommerce 2.0 or newer
* New Variable Subscription product type, woo!
* New 'subscription_end_of_prepaid_term' hook triggered at the end of the paid up
period for subscriptions that have been cancelled before their end date
* New filters on all subscription product meta data (e.g.
'woocommerce_subscriptions_product_period')
* New 'woocommerce_my_account_my_subscriptions_actions' filter for action buttons
displayed on "My Subscriptions" table
* New option to turn off automatic payments for all new orders
* Add new customer suspension limit setting also allowing store managers to turn
off customer suspensions completely (site admins can always suspend any
subscription)
* Add checkbox to allow subscribers to change the address used on all active
subscriptions
* Add "Change Shipping Address" action to "My Subscriptions" table to allow
subscribers to change the shipping address on a specific subscription
* Improve failed renewal order handling - rather than changing the failed renewal
orders status, keep the order as a record of the failed payment & create a new
renewal order for the payment
* Improve "My Subscriptions" table action links - right aligned buttons to match
WooCommerce order actions. Update to custom my-subscriptions.php templates
required.
* Improve free shipping string on orders
* Improve cart shipping string
* Fix order totals displayed on orders after payment
* Fix for potential duplicate renewal payments when W3 Total Cache or another
caching plugin is enabled
* Fix manual addition of non-subscription products to an order
* Fix bug adding outstanding balance even when admin has requested not to add
outstanding balances
* Fix bug which would allow a customer to reactivate a subscription that required
payment when using an out-of-date my-subscriptions.php template
* Fix order totals when prices inclusive of tax in WC 2.0
* No longer allow downloads for files associated with a subscription that has
expired, been cancelled or is on-hold
* Old upgrade routine for versions 1.1.x -> 1.2 can now be run when prematurely
upgrading WooCommerce to version 2.0
* Avoid potential conflict with other subscription plugins (if any exist) when
checking if an order item is a subscription
* Work with corrected processing order email hook in WC 2.0 to fix processing
subscription renewal orders in WC 2.0+
* Simplified cron lock system - using single option instead of transients
* Customer suspensions now off by default

2013.02.13 - version 1.2.5


* WC 2.0 Compatibility
* Fix race condition for user registration/guest checkout (in WC2.0+ only)
* Fix warning logged when processing a payment with PayPal: "Invalid profile
status for reactivate action; profile should be suspended"
* Fix next payment date when date is last day of month (to workaround PHP
strtotime() quirk)

2013.01.16 - version 1.2.4


* Add feature to manually change subscription details on an existing subscription
(for gateways that support it)
* Add pre-fill subscription details feature when manually adding a subscription
via the "Add Order" administration screen
* Add new shortcode for displaying a user's subscriptions - either use
[subscriptions] to display subscriptions purchased by the currently logged in user
or [subscriptions user_id=""] to display for a specific user
* Add new 'gateway_scheduled_payments' supports flag for payment gateways to
handle schedules themselves (with bulk processing, like PayPal)
* Add new 'woocommerce_subscriptions_max_failed_payments_exceeded' hook for
gateways & plugins to override defaults
* Add new 'woocommerce_subscriptions_list_table_pre_process_actions' for adding
custom actions to Manage Subscriptions admin table
* Add "Trial Expiration Date" to the Manage Subscriptions table
* Add filter to thank you message
* Improve PayPal IPN handling by making it independent of the invoice ID stored at
PayPal for the subscription (to help with migrations & imported subscriptions)
* Improve names of available payment gateways
* Improve efficiency of multiple loops by fixing logic
* Fix new WP3.5 warnings
* Fix sorting of subscriptions by Next Payment Date in the Manage Subscriptions
table
* Fix "Suspend" link incorrectly being shown for pending subscriptions on a
customer's "My Subscriptions" table
* Fix incorrect suspension of subscriptions upon renewal for gateways that process
payments in batches like PayPal (and therefore, may process a payment before it is
scheduled)
* Fix manually adding subscriptions via the add order screen
* Fix "Fatal error: Call to a member function supports() on a non-object"
* Fix order totals for products with free trial and sign-up fee
* Fix minor JavaScript error attempting to validate trial length on pages other
than "Edit Product"
* Fix PayPal suspend & reactivate profile status change notes (previously, all
notes said "cancelled")
* Fix handling of PayPal failed payment IPN requests
* Fix buttons on activation message for WP3.5+
* Fix bug in subscription search
* Fix suspension of a subscription when a payment fails
* Fix get_order_subscription_string() when subscription is for 1 billing period
(and generally improve it by using get_formatted_order_total())

2012.12.04 - version 1.2.3


* New updater
* Fix checkout bug when selling free subscriptions (or subscriptions with a 100%
discount coupon applied)
* Make subscription status translatable
* Don't show add to cart template when subscription product is not purchasable

2012.11.27 - version 1.2.2


* Fix backward compatibility for subscriptions with a free trial period that
existed prior to customisable trial periods added in version 1.2
* Fix bug in cart & order subscription price strings being displayed when there is
a free trial period & no sign-up fee
* Fix formatted line subtotal for subscriptions in admin new order emails
* Fix bug in cart subtotal when displayed in cart widget
* Fix subscription activation & order status change for payment with PayPal when a
subscription includes a free trial and no sign-up fee
* Delete renewal orders generated by PayPal which are a duplicate of the initial
order
* Improved tax line items on review order page when a subscription is in the cart
* Simplified subscription string for subscriptions with no sign-up fee or trial
period

2012.11.16 - version 1.2.1


* Fix suspension bug where next payment date after calculated after a subscription
has been suspended was not always in the future
* Fix bug with PayPal where a renewal order was created for the first subscription
payment
* Fix bug in version 1.2 upgrade routine causing renewal orders to duplicate if
run more than once (for example, after a timeout)
* Fix coupon bug preventing non-subscription coupons from being applied
* Changing date of renewal order's generated in 1.2 upgrade routine to be in site
time not server time
* Deleting any renewal orders generated in 1.2 upgrade routine which are a
duplicate of the initial order

2012.11.08 - version 1.2


* Support for sale prices on subscription products
* On the Manage Subscriptions page, store managers can now search for
subscriptions by subscriber username, email, order ID, product ID or subscription
item name (subscription product name at time of purchase)
* Any payment gateway with a WooCommerce extension can now be used to purchase and
renew subscriptions via manual payments
* Subscribers can now use a different payment method for each recurring payment
via manual payments
* Subscribers can now change the payment method on a subscription if an automatic
payments fails
* A subscription's next payment date can now be changed if the payment gateways
used to purchased it can change the date
* WooCommerce reports now include revenue from subscription's recurring payments
* Improved record keeping for recurring subscription payments with a renewal order
created for each payment
* Improved shipping management for subscriptions with physical goods through new
renewal order system - each billing period, a processing order is created and store
manager can mark the order as complete once the product for that period has been
shipped
* Improved subscription event logging on orders - subscription product name is now
used instead of subscription key
* Suspended subscription status changed to "on-hold" to match the WooCommerce
Order status
* When an order for a subscription is placed "on-hold" the subscription in that
order is also placed "on-hold"
* When subscription sign-up or renewal payment fails, subscriptions are now placed
"on-hold" instead of "failed" so the subscription can be activated when payment is
completed on the order
* A customer can now renew a subscription that was cancelled or expired via a link
on the "My Subscriptions" page
* The subscription name displayed in the "Manage Subscriptions" and "My
Subscriptions" tables now comes from the name at the time of the order not the
current post item
* Fixing bug in subscription reactivation - if a subscription expiry is before the
reactivation date, the subscription now correctly expires soon after being
activated instead of remaining active
* Subscriptions in the trash can now be permanently deleted
* Fixed the "Active Subscriber?" user column value to display even when other
plugins are #doingitwrong
* Next payment, last payment, start date and expiration dates are now displayed in
blog/site time instead of server time
* For dates within 24 hours, a more human friendly hourly time difference is now
displayed instead of just the date
* Removed end date and start date from My Subscriptions template so that it now
shows only next payment and expiration dates
* Improve subscription price description when subscription is only for one period,
e.g. "$5 for 3 months" is now used instead of "$5 every 3 months for 3 months"
* Fix bug in PayPal Standard integration affecting subscriptions for one billing
period and a interval greater than 1 (e.g. a subscription of $5 for 3 months)
* Allow for different trial period to billing period (if the gateway supports it),
e.g. a 2 week free trial with $5 per month subscription is now possible
* Add a coupon to apply fixed discount to a subscription's sign up fees only
* Add a coupon to apply fixed discount to a subscription's recurring payment only
* Add renewal order count column to 'Manage Subscriptions' table
* List renewal orders on the "Edit Order" page for the initial order of a
subscription
* Fix bug in subscription price string for subscriptions with a trial period and a
sign-up fee = recurring price + shipping

2012.09.27 - version 1.1.8


* Add safeguard against firing the scheduled payment hook if the subscription is
suspended, on-hold, cancelled or expired

2012.09.19 - version 1.1.7


* PayPal Standard expires a subscription immediately if it is only for one billing
period, this doesn't make sense, so Subscriptions now ignores PayPal IPN request to
expire a subscription immediately and instead expires the subscription after one
billing period has passed

2012.09.07 - version 1.1.6


* Updating renewal order email to work with changes in WooCommerce
* Accounting for failed payments when determining next payment date
* Adding a workaround for ISS issues with PHP's strtotime() function so expiry,
trial & next payment dates are consistent across all servers
* Fixing renewal order ID added in the order note on the original order
* Fixing bug in automatic subscription and order cancellation when the maximum
number of allowable failed payments is reached
* Fix bug in WC_Subscriptions_Order::get_failed_payment_count()

2012.09.03 - version 1.1.5


* Improving safeguard against WP-Cron infinite loop by adding fallback value for
payment blocking transient
* Fixing bug in payment safeguard relating to large subscription keys (order ID &
product ID)
* Better handling of subscription with no-future payments

2012.08.27 - version 1.1.4


* Adding a workaround to deal with PayPal invoice prefix changes and IPN requests
for orders using the old invoice prefix
* More conventional text-domain for internationalisation - woocommerce-
subscriptions instead of woocommerce_subscription
* Upgrade safe internationalisation by allowing language files to be located in
/wp-content/languages/woocommerce-subscriptions/
* Fixing PayPal issue when no invoice prefix is set
* Fixing status message issues on Subscription's Management Page
* Fixing "Creating default object from empty value" warning in PHP version newer
than 5.4

2012.08.22 - version 1.1.3


* Updating to WooCommerce 1.6.3 PayPal invoice/order key changes
* Better sorting of dates, especially last/next payment dates in the Subscriptions
Management table
* Ordering users by display name in Subscriptions Management table
* Fixing products set as subscriptions against a users account in 1.1.2
* Adding version dependant upgrade script

2012.08.13 - version 1.1.2


* Adding a safeguard against WP-Cron's infinite loop

2012.08.03 - version 1.1.1


* Fixing multisite bug which displayed a user's subscriptions from each site in a
network on every other site in the network
* Fixing multisite activation

2012.07.26 - version 1.1


* Free trial periods can now be added to the beginning of a subscription
* Subscriptions can now be manually created by adding a subscription to an order
or creating a new order with a subscription
* Subscriptions can now be billed at different intervals of each period, e.g. $5
every 2 weeks or $10 every 6 months
* Subscriptions can now be suspended and reactivated (by subscribers and store
managers)
* Subscriptions purchased with PayPal Standard can now be cancelled (and
suspended/reactivated)
* Guest checkout & sign-up login WooCommerce admin settings are now honoured for
all transactions that do not include a subscription
* When a customer ID is changed on an order, any subscriptions on that order are
transferred to the new customer
* Fixing PayPal IPN EOT error causing cancelled subscriptions to be marked as
expired
* Fixing i18n implementation to allow translations

2012.06.21 - version 1.0


* First Release

You might also like