mirror of
https://github.com/pronamic/woocommerce-subscriptions.git
synced 2025-10-07 10:04:03 +00:00
Updates to 5.8.0
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
*** Woo Subscriptions Changelog ***
|
*** Woo Subscriptions Changelog ***
|
||||||
|
|
||||||
|
2024-01-11 - version 5.9.0
|
||||||
|
* Fix: Resolved an issue that caused ordering the Admin Subscriptions List Table to not work when HPOS is enabled.
|
||||||
|
* Fix: When switching all subscription items in the same cart, ensure the previous subscription is reused where possible instead of creating all new subscriptions.
|
||||||
|
* Update: Changed the edit subscription product "Expire after" (Subscription length) so it more clearly describes when a subscription will automatically stop renewing.
|
||||||
|
* Update: Log all exceptions caught by WooCommerce while processing a subscription scheduled action.
|
||||||
|
* Dev: Update subscriptions-core to 6.7.0.
|
||||||
|
|
||||||
2023-12-21 - version 5.8.0
|
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: 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 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.
|
||||||
|
@@ -1025,10 +1025,10 @@ class WC_Subscriptions_Switcher {
|
|||||||
|
|
||||||
$subscription->set_shipping_total( $subscription_shipping_total );
|
$subscription->set_shipping_total( $subscription_shipping_total );
|
||||||
$switch_order_data[ $subscription->get_id() ]['shipping_line_items'] = $new_shipping_line_items;
|
$switch_order_data[ $subscription->get_id() ]['shipping_line_items'] = $new_shipping_line_items;
|
||||||
|
}
|
||||||
|
|
||||||
// Loop through cart items to add them to the switched subscription.
|
// Loop through cart items to add them to the switched subscription.
|
||||||
foreach ( $recurring_cart->get_cart() as $cart_item_key => $cart_item ) {
|
foreach ( $recurring_cart->get_cart() as $cart_item_key => $cart_item ) {
|
||||||
|
|
||||||
// If we haven't calculated a first payment date, fall back to the recurring cart's next payment date.
|
// If we haven't calculated a first payment date, fall back to the recurring cart's next payment date.
|
||||||
if ( 0 == $cart_item['subscription_switch']['first_payment_timestamp'] ) {
|
if ( 0 == $cart_item['subscription_switch']['first_payment_timestamp'] ) {
|
||||||
$cart_item['subscription_switch']['first_payment_timestamp'] = wcs_date_to_time( $recurring_cart->next_payment_date );
|
$cart_item['subscription_switch']['first_payment_timestamp'] = wcs_date_to_time( $recurring_cart->next_payment_date );
|
||||||
@@ -1049,8 +1049,11 @@ class WC_Subscriptions_Switcher {
|
|||||||
$switched_item_data['switch_direction'] = $switch_item->get_switch_type();
|
$switched_item_data['switch_direction'] = $switch_item->get_switch_type();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// An existing subscription can be updated if it's a single item subscription or switches already calculated have left it with just one item.
|
||||||
|
$can_update_existing_subscription = $is_single_item_subscription || ! empty( $existing_item ) && self::is_last_remaining_item_after_previous_switches( $subscription, $existing_item, $switch_order_data );
|
||||||
|
|
||||||
// If the item is on the same schedule, we can just add it to the new subscription and remove the old item.
|
// If the item is on the same schedule, we can just add it to the new subscription and remove the old item.
|
||||||
if ( $is_single_item_subscription || ( false === $is_different_billing_schedule && false === $is_different_payment_date && false === $is_different_length ) ) {
|
if ( $can_update_existing_subscription || ( false === $is_different_billing_schedule && false === $is_different_payment_date && false === $is_different_length ) ) {
|
||||||
// Add the new item
|
// Add the new item
|
||||||
$item = new WC_Order_Item_Pending_Switch;
|
$item = new WC_Order_Item_Pending_Switch;
|
||||||
$item->legacy_values = $cart_item; // @deprecated For legacy actions.
|
$item->legacy_values = $cart_item; // @deprecated For legacy actions.
|
||||||
@@ -1101,7 +1104,7 @@ class WC_Subscriptions_Switcher {
|
|||||||
$switch_order_data[ $subscription->get_id() ]['switches'][ $cart_item['subscription_switch']['order_line_item_id'] ] = $switched_item_data;
|
$switch_order_data[ $subscription->get_id() ]['switches'][ $cart_item['subscription_switch']['order_line_item_id'] ] = $switched_item_data;
|
||||||
|
|
||||||
// If the old subscription has just one item, we can safely update its billing schedule
|
// If the old subscription has just one item, we can safely update its billing schedule
|
||||||
if ( $is_single_item_subscription ) {
|
if ( $can_update_existing_subscription ) {
|
||||||
|
|
||||||
if ( $is_different_billing_schedule ) {
|
if ( $is_different_billing_schedule ) {
|
||||||
$switch_order_data[ $subscription->get_id() ]['billing_schedule']['_billing_period'] = WC_Subscriptions_Product::get_period( $cart_item['data'] );
|
$switch_order_data[ $subscription->get_id() ]['billing_schedule']['_billing_period'] = WC_Subscriptions_Product::get_period( $cart_item['data'] );
|
||||||
@@ -1135,7 +1138,6 @@ class WC_Subscriptions_Switcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
foreach ( $switch_order_data as $subscription_id => $switch_data ) {
|
foreach ( $switch_order_data as $subscription_id => $switch_data ) {
|
||||||
// Cancel all the switch orders linked to the switched subscription(s) which haven't been completed yet - excluding this one.
|
// Cancel all the switch orders linked to the switched subscription(s) which haven't been completed yet - excluding this one.
|
||||||
@@ -2340,6 +2342,41 @@ class WC_Subscriptions_Switcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines if a subscription item being switched is the last remaining item on the subscription after previous switches.
|
||||||
|
*
|
||||||
|
* If the item being switched is the last remaining item on the subscription after previous switches, then the subscription
|
||||||
|
* can be updated even if the billing schedule is being changed.
|
||||||
|
*
|
||||||
|
* @param WC_Subscription $subscription The subscription being switched.
|
||||||
|
* @param WC_Order_Item_Product $switched_item The subscription line item being switched.
|
||||||
|
* @param array $switch_data Data about the switches that will occur on the subscription.
|
||||||
|
*
|
||||||
|
* @return bool True if the item being switched is the last remaining item on the subscription after previous switches.
|
||||||
|
*/
|
||||||
|
private static function is_last_remaining_item_after_previous_switches( $subscription, $switched_item, $switch_data ) {
|
||||||
|
$remaining_items = $subscription->get_items();
|
||||||
|
|
||||||
|
// If there is no switch data for this subscription return false.
|
||||||
|
if ( ! isset( $switch_data[ $subscription->get_id() ]['switches'] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach( $switch_data[ $subscription->get_id() ]['switches'] as $switch ) {
|
||||||
|
// If items are actively being added to this subscription, then it is not the last remaining item.
|
||||||
|
if ( isset( $switch['add_line_item'] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $switch['remove_line_item'] ) ) {
|
||||||
|
unset( $remaining_items[ $switch['remove_line_item'] ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's only 1 item left and it's the item we're switching, then it's the last remaining item.
|
||||||
|
return 1 === count( $remaining_items ) && isset( $remaining_items[ $switched_item->get_id() ] );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds switch orders or switched subscriptions to the related order meta box.
|
* Adds switch orders or switched subscriptions to the related order meta box.
|
||||||
*
|
*
|
||||||
|
@@ -1,17 +1,17 @@
|
|||||||
# Copyright (C) 2023 WooCommerce
|
# Copyright (C) 2024 WooCommerce
|
||||||
# This file is distributed under the same license as the Woo Subscriptions plugin.
|
# This file is distributed under the same license as the Woo Subscriptions plugin.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Woo Subscriptions 5.8.0\n"
|
"Project-Id-Version: Woo Subscriptions 5.9.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://woocommerce.com/contact-us\n"
|
"Report-Msgid-Bugs-To: https://woocommerce.com/contact-us\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"POT-Creation-Date: 2023-12-21T00:30:53+00:00\n"
|
"POT-Creation-Date: 2024-01-11T06:31:17+00:00\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"X-Generator: WP-CLI 2.8.1\n"
|
"X-Generator: WP-CLI 2.9.0\n"
|
||||||
"X-Domain: woocommerce-subscriptions\n"
|
"X-Domain: woocommerce-subscriptions\n"
|
||||||
|
|
||||||
#. Plugin Name of the plugin
|
#. Plugin Name of the plugin
|
||||||
@@ -1090,7 +1090,7 @@ msgid "Set a maximum number of times a customer can suspend their account for ea
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/class-wcs-customer-suspension-manager.php:111
|
#: includes/class-wcs-customer-suspension-manager.php:111
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1334
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1364
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1224,7 +1224,7 @@ msgid "Welcome to Woo Subscriptions %s!"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/class-wcs-upgrade-notice-manager.php:112
|
#: includes/class-wcs-upgrade-notice-manager.php:112
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-failed-scheduled-action-manager.php:163
|
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-failed-scheduled-action-manager.php:221
|
||||||
msgid "Learn more"
|
msgid "Learn more"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1644,7 +1644,7 @@ msgid "Choose a new subscription."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:237
|
#: includes/switching/class-wc-subscriptions-switcher.php:237
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1238
|
#: includes/switching/class-wc-subscriptions-switcher.php:1240
|
||||||
msgid "Your cart contained an invalid subscription switch request. It has been removed."
|
msgid "Your cart contained an invalid subscription switch request. It has been removed."
|
||||||
msgid_plural "Your cart contained invalid subscription switch requests. They have been removed."
|
msgid_plural "Your cart contained invalid subscription switch requests. They have been removed."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
@@ -1755,7 +1755,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:448
|
#: includes/switching/class-wc-subscriptions-switcher.php:448
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:550
|
#: includes/switching/class-wc-subscriptions-switcher.php:550
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2642
|
#: includes/switching/class-wc-subscriptions-switcher.php:2679
|
||||||
msgid "Upgrade or Downgrade"
|
msgid "Upgrade or Downgrade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1774,87 +1774,87 @@ msgid "Between Grouped Subscriptions"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: %s: order number.
|
#. translators: %s: order number.
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1147
|
#: includes/switching/class-wc-subscriptions-switcher.php:1149
|
||||||
msgid "Switch order cancelled due to a new switch order being created #%s."
|
msgid "Switch order cancelled due to a new switch order being created #%s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1366
|
#: includes/switching/class-wc-subscriptions-switcher.php:1368
|
||||||
msgid "You can only switch to a subscription product."
|
msgid "You can only switch to a subscription product."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1372
|
#: includes/switching/class-wc-subscriptions-switcher.php:1374
|
||||||
msgid "We can not find your old subscription item."
|
msgid "We can not find your old subscription item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1394
|
#: includes/switching/class-wc-subscriptions-switcher.php:1396
|
||||||
msgid "You can not switch to the same subscription."
|
msgid "You can not switch to the same subscription."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1441
|
#: includes/switching/class-wc-subscriptions-switcher.php:1443
|
||||||
msgid "You can not switch this subscription. It appears you do not own the subscription."
|
msgid "You can not switch this subscription. It appears you do not own the subscription."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1482
|
#: includes/switching/class-wc-subscriptions-switcher.php:1484
|
||||||
msgid "There was an error locating the switch details."
|
msgid "There was an error locating the switch details."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1863
|
#: includes/switching/class-wc-subscriptions-switcher.php:1865
|
||||||
msgctxt "a switch type"
|
msgctxt "a switch type"
|
||||||
msgid "Downgrade"
|
msgid "Downgrade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1866
|
#: includes/switching/class-wc-subscriptions-switcher.php:1868
|
||||||
msgctxt "a switch type"
|
msgctxt "a switch type"
|
||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1869
|
#: includes/switching/class-wc-subscriptions-switcher.php:1871
|
||||||
msgctxt "a switch type"
|
msgctxt "a switch type"
|
||||||
msgid "Crossgrade"
|
msgid "Crossgrade"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: %1: product subtotal, %2: HTML span tag, %3: direction (upgrade, downgrade, crossgrade), %4: closing HTML span tag
|
#. translators: %1: product subtotal, %2: HTML span tag, %3: direction (upgrade, downgrade, crossgrade), %4: closing HTML span tag
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1874
|
#: includes/switching/class-wc-subscriptions-switcher.php:1876
|
||||||
msgctxt "product subtotal string"
|
msgctxt "product subtotal string"
|
||||||
msgid "%1$s %2$s(%3$s)%4$s"
|
msgid "%1$s %2$s(%3$s)%4$s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1990
|
#: includes/switching/class-wc-subscriptions-switcher.php:1992
|
||||||
msgid "The original subscription item being switched cannot be found."
|
msgid "The original subscription item being switched cannot be found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:1992
|
#: includes/switching/class-wc-subscriptions-switcher.php:1994
|
||||||
msgid "The item on the switch order cannot be found."
|
msgid "The item on the switch order cannot be found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: 1$: old item, 2$: new item when switching
|
#. translators: 1$: old item, 2$: new item when switching
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2003
|
#: includes/switching/class-wc-subscriptions-switcher.php:2005
|
||||||
msgctxt "used in order notes"
|
msgctxt "used in order notes"
|
||||||
msgid "Customer switched from: %1$s to %2$s."
|
msgid "Customer switched from: %1$s to %2$s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: %s: new item name.
|
#. translators: %s: new item name.
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2006
|
#: includes/switching/class-wc-subscriptions-switcher.php:2008
|
||||||
msgctxt "used in order notes"
|
msgctxt "used in order notes"
|
||||||
msgid "Customer added %s."
|
msgid "Customer added %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2366
|
#: includes/switching/class-wc-subscriptions-switcher.php:2403
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2919
|
#: includes/switching/class-wc-subscriptions-switcher.php:2956
|
||||||
msgid "Switch Order"
|
msgid "Switch Order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2381
|
#: includes/switching/class-wc-subscriptions-switcher.php:2418
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2934
|
#: includes/switching/class-wc-subscriptions-switcher.php:2971
|
||||||
msgid "Switched Subscription"
|
msgid "Switched Subscription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2599
|
#: includes/switching/class-wc-subscriptions-switcher.php:2636
|
||||||
msgctxt "add to cart button text while switching a subscription"
|
msgctxt "add to cart button text while switching a subscription"
|
||||||
msgid "Switch subscription"
|
msgid "Switch subscription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/switching/class-wc-subscriptions-switcher.php:2783
|
#: includes/switching/class-wc-subscriptions-switcher.php:2820
|
||||||
#: vendor/woocommerce/subscriptions-core/wcs-functions.php:224
|
#: vendor/woocommerce/subscriptions-core/wcs-functions.php:224
|
||||||
msgctxt "Subscription status"
|
msgctxt "Subscription status"
|
||||||
msgid "Switched"
|
msgid "Switched"
|
||||||
@@ -1941,11 +1941,11 @@ msgstr ""
|
|||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:341
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:341
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:482
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:482
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php:66
|
#: vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php:66
|
||||||
msgid "Expire after"
|
msgid "Stop renewing after"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:344
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wc-subscriptions-admin.php:344
|
||||||
msgid "Automatically expire the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date."
|
msgid "Automatically stop renewing the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: %s is a currency symbol / code
|
#. translators: %s is a currency symbol / code
|
||||||
@@ -2332,41 +2332,41 @@ msgstr ""
|
|||||||
msgid "Lock manual price increases"
|
msgid "Lock manual price increases"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:235
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:234
|
||||||
msgid "Search for a product…"
|
msgid "Search for a product…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:298
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:297
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:329
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:328
|
||||||
msgctxt "an action on a subscription"
|
msgctxt "an action on a subscription"
|
||||||
msgid "Move to Trash"
|
msgid "Move to Trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:307
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:306
|
||||||
msgctxt "an action on a subscription"
|
msgctxt "an action on a subscription"
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:308
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:307
|
||||||
msgctxt "an action on a subscription"
|
msgctxt "an action on a subscription"
|
||||||
msgid "Delete Permanently"
|
msgid "Delete Permanently"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:326
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:325
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1722
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1752
|
||||||
msgctxt "an action on a subscription"
|
msgctxt "an action on a subscription"
|
||||||
msgid "Activate"
|
msgid "Activate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:327
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:326
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1723
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1753
|
||||||
msgctxt "an action on a subscription"
|
msgctxt "an action on a subscription"
|
||||||
msgid "Put on-hold"
|
msgid "Put on-hold"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:328
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:327
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1335
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1365
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1724
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1754
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:1937
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:1937
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-user-functions.php:327
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-user-functions.php:327
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/myaccount/related-orders.php:78
|
#: vendor/woocommerce/subscriptions-core/templates/myaccount/related-orders.php:78
|
||||||
@@ -2375,20 +2375,20 @@ msgid "Cancel"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is the number of subscriptions updated
|
#. translators: placeholder is the number of subscriptions updated
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:416
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:415
|
||||||
msgid "%s subscription status changed."
|
msgid "%s subscription status changed."
|
||||||
msgid_plural "%s subscription statuses changed."
|
msgid_plural "%s subscription statuses changed."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#. translators: 1$: is the number of subscriptions not updated, 2$: is the error message
|
#. translators: 1$: is the number of subscriptions not updated, 2$: is the error message
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:435
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:434
|
||||||
msgid "%1$s subscription could not be updated: %2$s"
|
msgid "%1$s subscription could not be updated: %2$s"
|
||||||
msgid_plural "%1$s subscriptions could not be updated: %2$s"
|
msgid_plural "%1$s subscriptions could not be updated: %2$s"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:463
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:462
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/views/html-related-orders-table.php:21
|
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/views/html-related-orders-table.php:21
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/myaccount/my-subscriptions.php:22
|
#: vendor/woocommerce/subscriptions-core/templates/myaccount/my-subscriptions.php:22
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/myaccount/my-subscriptions.php:37
|
#: vendor/woocommerce/subscriptions-core/templates/myaccount/my-subscriptions.php:37
|
||||||
@@ -2400,7 +2400,7 @@ msgstr[1] ""
|
|||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:464
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:463
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-core-plugin.php:337
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-core-plugin.php:337
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/emails/cancelled-subscription.php:21
|
#: vendor/woocommerce/subscriptions-core/templates/emails/cancelled-subscription.php:21
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/emails/expired-subscription.php:21
|
#: vendor/woocommerce/subscriptions-core/templates/emails/expired-subscription.php:21
|
||||||
@@ -2410,79 +2410,79 @@ msgstr ""
|
|||||||
msgid "Subscription"
|
msgid "Subscription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:465
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:464
|
||||||
msgid "Items"
|
msgid "Items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:466
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:465
|
||||||
#: vendor/woocommerce/subscriptions-core/build/index.js:11
|
#: vendor/woocommerce/subscriptions-core/build/index.js:11
|
||||||
#: vendor/woocommerce/subscriptions-core/build/index.js:17
|
#: vendor/woocommerce/subscriptions-core/build/index.js:17
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:467
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:466
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:468
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:467
|
||||||
msgid "Trial End"
|
msgid "Trial End"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:469
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:468
|
||||||
msgid "Next Payment"
|
msgid "Next Payment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:470
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:469
|
||||||
msgid "Last Order Date"
|
msgid "Last Order Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:471
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:470
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:472
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:471
|
||||||
msgctxt "number of orders linked to a subscription"
|
msgctxt "number of orders linked to a subscription"
|
||||||
msgid "Orders"
|
msgid "Orders"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is a subscription ID.
|
#. translators: placeholder is a subscription ID.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:507
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:506
|
||||||
msgctxt "hash before subscription number"
|
msgctxt "hash before subscription number"
|
||||||
msgid "#%s"
|
msgid "#%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: Placeholder is a <br> HTML tag.
|
#. translators: Placeholder is a <br> HTML tag.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:519
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:518
|
||||||
msgid "This subscription couldn't be loaded from the database. %s Click to learn more."
|
msgid "This subscription couldn't be loaded from the database. %s Click to learn more."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:557
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:556
|
||||||
msgctxt "meaning billing address"
|
msgctxt "meaning billing address"
|
||||||
msgid "Billing:"
|
msgid "Billing:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is customer's billing email
|
#. translators: placeholder is customer's billing email
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:562
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:561
|
||||||
msgid "Email: %s"
|
msgid "Email: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is customer's billing phone number
|
#. translators: placeholder is customer's billing phone number
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:567
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:566
|
||||||
msgid "Tel: %s"
|
msgid "Tel: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: $1: is opening link, $2: is subscription order number, $3: is closing link tag, $4: is user's name
|
#. translators: $1: is opening link, $2: is subscription order number, $3: is closing link tag, $4: is user's name
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:597
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:596
|
||||||
msgctxt "Subscription title on admin table. (e.g.: #211 for John Doe)"
|
msgctxt "Subscription title on admin table. (e.g.: #211 for John Doe)"
|
||||||
msgid "%1$s#%2$s%3$s for %4$s"
|
msgid "%1$s#%2$s%3$s for %4$s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:606
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:605
|
||||||
msgid "Show more details"
|
msgid "Show more details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: %d: item count.
|
#. translators: %d: item count.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:627
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:626
|
||||||
msgid "%d item"
|
msgid "%d item"
|
||||||
msgid_plural "%d items"
|
msgid_plural "%d items"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
@@ -2490,131 +2490,131 @@ msgstr[1] ""
|
|||||||
|
|
||||||
#. translators: placeholder is the display name of a payment gateway a subscription was paid by
|
#. translators: placeholder is the display name of a payment gateway a subscription was paid by
|
||||||
#. translators: %s: payment method.
|
#. translators: %s: payment method.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:646
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:645
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2126
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2126
|
||||||
msgid "Via %s"
|
msgid "Via %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:689
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:688
|
||||||
msgid "Y/m/d g:i:s A"
|
msgid "Y/m/d g:i:s A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:706
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:705
|
||||||
msgid "<b>Subscription payment overdue.</b></br>"
|
msgid "<b>Subscription payment overdue.</b></br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:711
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:710
|
||||||
msgid "This date should be treated as an estimate only. The payment gateway for this subscription controls when payments are processed.</br>"
|
msgid "This date should be treated as an estimate only. The payment gateway for this subscription controls when payments are processed.</br>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1069
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1099
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1072
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1102
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1075
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1105
|
||||||
msgid "Subscription updated."
|
msgid "Subscription updated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1070
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1100
|
||||||
msgid "Custom field updated."
|
msgid "Custom field updated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1071
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1101
|
||||||
msgid "Custom field deleted."
|
msgid "Custom field deleted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is previous post title
|
#. translators: placeholder is previous post title
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1074
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1104
|
||||||
msgctxt "used in post updated messages"
|
msgctxt "used in post updated messages"
|
||||||
msgid "Subscription restored to revision from %s"
|
msgid "Subscription restored to revision from %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1076
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1106
|
||||||
msgid "Subscription saved."
|
msgid "Subscription saved."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1077
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1107
|
||||||
msgid "Subscription submitted."
|
msgid "Subscription submitted."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: php date string
|
#. translators: php date string
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1079
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1109
|
||||||
msgid "Subscription scheduled for: %1$s."
|
msgid "Subscription scheduled for: %1$s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: php date string
|
#. translators: php date string
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1079
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1109
|
||||||
msgctxt "used in \"Subscription scheduled for <date>\""
|
msgctxt "used in \"Subscription scheduled for <date>\""
|
||||||
msgid "M j, Y @ G:i"
|
msgid "M j, Y @ G:i"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1080
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1110
|
||||||
msgid "Subscription draft updated."
|
msgid "Subscription draft updated."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1122
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1152
|
||||||
msgid "Any Payment Method"
|
msgid "Any Payment Method"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1123
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1153
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1129
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1159
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2108
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscription.php:2108
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-change-payment-method-admin.php:170
|
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-change-payment-method-admin.php:170
|
||||||
msgid "Manual Renewal"
|
msgid "Manual Renewal"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: 1: user display name 2: user ID 3: user email
|
#. translators: 1: user display name 2: user ID 3: user email
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1288
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1318
|
||||||
msgid "%1$s (#%2$s – %3$s)"
|
msgid "%1$s (#%2$s – %3$s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1295
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1325
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:96
|
#: vendor/woocommerce/subscriptions-core/includes/admin/meta-boxes/class-wcs-meta-box-subscription-data.php:96
|
||||||
msgid "Search for a customer…"
|
msgid "Search for a customer…"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1333
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1363
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-user-functions.php:311
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-user-functions.php:311
|
||||||
msgid "Reactivate"
|
msgid "Reactivate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1336
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1366
|
||||||
msgid "Trash"
|
msgid "Trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1337
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1367
|
||||||
msgid "Delete Permanently"
|
msgid "Delete Permanently"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1356
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1386
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:768
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:768
|
||||||
msgid "Restore this item from the Trash"
|
msgid "Restore this item from the Trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1358
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1388
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:769
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-product.php:769
|
||||||
msgid "Restore"
|
msgid "Restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1363
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1393
|
||||||
msgid "Move this item to the Trash"
|
msgid "Move this item to the Trash"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1377
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1407
|
||||||
msgid "Delete this item permanently"
|
msgid "Delete this item permanently"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1388
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1418
|
||||||
msgid "Cancel Now"
|
msgid "Cancel Now"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1454
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1484
|
||||||
msgctxt "Used in order note. Reason why status changed."
|
msgctxt "Used in order note. Reason why status changed."
|
||||||
msgid "Subscription status changed by bulk edit:"
|
msgid "Subscription status changed by bulk edit:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1572
|
#: vendor/woocommerce/subscriptions-core/includes/admin/class-wcs-admin-post-types.php:1602
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3665,9 +3665,9 @@ msgctxt "used in order note as reason for why subscription status changed"
|
|||||||
msgid "Subscription renewal payment due:"
|
msgid "Subscription renewal payment due:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is an order note.
|
#. translators: placeholder %1 is an order note. %2 is the error message that was thrown.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:149
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:149
|
||||||
msgid "Error: Unable to create renewal order with note \"%s\""
|
msgid "Error: Unable to create renewal order with note \"%1$s\". Message: %2$s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:159
|
#: vendor/woocommerce/subscriptions-core/includes/class-wc-subscriptions-manager.php:159
|
||||||
@@ -4189,7 +4189,7 @@ msgstr ""
|
|||||||
msgid "Admin turned on automatic renewals by changing payment method to \"%s\" via the Edit Subscription screen."
|
msgid "Admin turned on automatic renewals by changing payment method to \"%s\" via the Edit Subscription screen."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-failed-scheduled-action-manager.php:158
|
#: vendor/woocommerce/subscriptions-core/includes/class-wcs-failed-scheduled-action-manager.php:216
|
||||||
msgid "Ignore this error"
|
msgid "Ignore this error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4489,7 +4489,9 @@ msgid "Subscription – %s"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: %s: Order date
|
#. translators: %s: Order date
|
||||||
|
#. translators: placeholders are strftime() strings.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php:265
|
#: vendor/woocommerce/subscriptions-core/includes/data-stores/class-wcs-subscription-data-store-cpt.php:265
|
||||||
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:261
|
||||||
msgctxt "Order date parsed by DateTime::format"
|
msgctxt "Order date parsed by DateTime::format"
|
||||||
msgid "M d, Y @ h:i A"
|
msgid "M d, Y @ h:i A"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5989,36 +5991,35 @@ msgctxt "Refers to the type of the copy being performed: \"copy_order\", \"subsc
|
|||||||
msgid "Invalid data. Type of copy is not a string."
|
msgid "Invalid data. Type of copy is not a string."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholders are strftime() strings.
|
#. translators: placeholder %1 is the order type. %2 is the subscription ID we attempted to create the order for.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:253
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:229
|
||||||
msgctxt "Used in subscription post title. \"Subscription renewal order - <this>\""
|
msgid "There was an error fetching the new order (%1$s) for subscription %2$d."
|
||||||
msgid "%b %d, %Y @ %I:%M %p"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is a date.
|
#. translators: placeholder is a date.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:258
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:266
|
||||||
msgid "Subscription Renewal Order – %s"
|
msgid "Subscription Renewal Order – %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is a date.
|
#. translators: placeholder is a date.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:262
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:270
|
||||||
msgid "Resubscribe Order – %s"
|
msgid "Resubscribe Order – %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:281
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:289
|
||||||
msgid "$type passed to the function was not a string."
|
msgid "$type passed to the function was not a string."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: placeholder is an order type.
|
#. translators: placeholder is an order type.
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:286
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:294
|
||||||
msgid "\"%s\" is not a valid new order type."
|
msgid "\"%s\" is not a valid new order type."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:537
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:545
|
||||||
msgid "Invalid data. No valid subscription / order was passed in."
|
msgid "Invalid data. No valid subscription / order was passed in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:541
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-order-functions.php:549
|
||||||
msgid "Invalid data. No valid item id was passed in."
|
msgid "Invalid data. No valid item id was passed in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -6056,7 +6057,7 @@ msgstr[1] ""
|
|||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-time-functions.php:88
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-time-functions.php:88
|
||||||
msgctxt "Subscription length"
|
msgctxt "Subscription length"
|
||||||
msgid "Never expire"
|
msgid "Do not stop until cancelled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/includes/wcs-time-functions.php:93
|
#: vendor/woocommerce/subscriptions-core/includes/wcs-time-functions.php:93
|
||||||
@@ -6233,7 +6234,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php:67
|
#: vendor/woocommerce/subscriptions-core/templates/admin/html-variation-price.php:67
|
||||||
msgctxt "Subscription Length dropdown's description in pricing fields"
|
msgctxt "Subscription Length dropdown's description in pricing fields"
|
||||||
msgid "Automatically expire the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date."
|
msgid "Automatically stop renewing the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: vendor/woocommerce/subscriptions-core/templates/cart/cart-recurring-shipping.php:32
|
#: vendor/woocommerce/subscriptions-core/templates/cart/cart-recurring-shipping.php:32
|
||||||
|
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
@@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
|
|||||||
|
|
||||||
require_once __DIR__ . '/composer/autoload_real.php';
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
return ComposerAutoloaderInita652888dbfcef5cfe9fff35250423322::getLoader();
|
return ComposerAutoloaderInit9ece70b6f360bc43bc3bc8c8cedd9233::getLoader();
|
||||||
|
8
vendor/composer/autoload_real.php
vendored
8
vendor/composer/autoload_real.php
vendored
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// autoload_real.php @generated by Composer
|
// autoload_real.php @generated by Composer
|
||||||
|
|
||||||
class ComposerAutoloaderInita652888dbfcef5cfe9fff35250423322
|
class ComposerAutoloaderInit9ece70b6f360bc43bc3bc8c8cedd9233
|
||||||
{
|
{
|
||||||
private static $loader;
|
private static $loader;
|
||||||
|
|
||||||
@@ -24,12 +24,12 @@ class ComposerAutoloaderInita652888dbfcef5cfe9fff35250423322
|
|||||||
|
|
||||||
require __DIR__ . '/platform_check.php';
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInita652888dbfcef5cfe9fff35250423322', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInit9ece70b6f360bc43bc3bc8c8cedd9233', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInita652888dbfcef5cfe9fff35250423322', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInit9ece70b6f360bc43bc3bc8c8cedd9233', 'loadClassLoader'));
|
||||||
|
|
||||||
require __DIR__ . '/autoload_static.php';
|
require __DIR__ . '/autoload_static.php';
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInita652888dbfcef5cfe9fff35250423322::getInitializer($loader));
|
call_user_func(\Composer\Autoload\ComposerStaticInit9ece70b6f360bc43bc3bc8c8cedd9233::getInitializer($loader));
|
||||||
|
|
||||||
$loader->register(true);
|
$loader->register(true);
|
||||||
|
|
||||||
|
8
vendor/composer/autoload_static.php
vendored
8
vendor/composer/autoload_static.php
vendored
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
namespace Composer\Autoload;
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
class ComposerStaticInita652888dbfcef5cfe9fff35250423322
|
class ComposerStaticInit9ece70b6f360bc43bc3bc8c8cedd9233
|
||||||
{
|
{
|
||||||
public static $prefixLengthsPsr4 = array (
|
public static $prefixLengthsPsr4 = array (
|
||||||
'C' =>
|
'C' =>
|
||||||
@@ -129,9 +129,9 @@ class ComposerStaticInita652888dbfcef5cfe9fff35250423322
|
|||||||
public static function getInitializer(ClassLoader $loader)
|
public static function getInitializer(ClassLoader $loader)
|
||||||
{
|
{
|
||||||
return \Closure::bind(function () use ($loader) {
|
return \Closure::bind(function () use ($loader) {
|
||||||
$loader->prefixLengthsPsr4 = ComposerStaticInita652888dbfcef5cfe9fff35250423322::$prefixLengthsPsr4;
|
$loader->prefixLengthsPsr4 = ComposerStaticInit9ece70b6f360bc43bc3bc8c8cedd9233::$prefixLengthsPsr4;
|
||||||
$loader->prefixDirsPsr4 = ComposerStaticInita652888dbfcef5cfe9fff35250423322::$prefixDirsPsr4;
|
$loader->prefixDirsPsr4 = ComposerStaticInit9ece70b6f360bc43bc3bc8c8cedd9233::$prefixDirsPsr4;
|
||||||
$loader->classMap = ComposerStaticInita652888dbfcef5cfe9fff35250423322::$classMap;
|
$loader->classMap = ComposerStaticInit9ece70b6f360bc43bc3bc8c8cedd9233::$classMap;
|
||||||
|
|
||||||
}, null, ClassLoader::class);
|
}, null, ClassLoader::class);
|
||||||
}
|
}
|
||||||
|
14
vendor/composer/installed.json
vendored
14
vendor/composer/installed.json
vendored
@@ -156,17 +156,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "woocommerce/subscriptions-core",
|
"name": "woocommerce/subscriptions-core",
|
||||||
"version": "6.6.0",
|
"version": "6.7.0",
|
||||||
"version_normalized": "6.6.0.0",
|
"version_normalized": "6.7.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/Automattic/woocommerce-subscriptions-core.git",
|
"url": "https://github.com/Automattic/woocommerce-subscriptions-core.git",
|
||||||
"reference": "5abcf9aac4e53ad9bdcf3752a34a04ae42261bac"
|
"reference": "2531db11c67a060cbb06c6246c162688a2c9eccb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/Automattic/woocommerce-subscriptions-core/zipball/5abcf9aac4e53ad9bdcf3752a34a04ae42261bac",
|
"url": "https://api.github.com/repos/Automattic/woocommerce-subscriptions-core/zipball/2531db11c67a060cbb06c6246c162688a2c9eccb",
|
||||||
"reference": "5abcf9aac4e53ad9bdcf3752a34a04ae42261bac",
|
"reference": "2531db11c67a060cbb06c6246c162688a2c9eccb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
"woocommerce/woocommerce-sniffs": "0.1.0",
|
"woocommerce/woocommerce-sniffs": "0.1.0",
|
||||||
"yoast/phpunit-polyfills": "1.1.0"
|
"yoast/phpunit-polyfills": "1.1.0"
|
||||||
},
|
},
|
||||||
"time": "2023-12-20T07:19:09+00:00",
|
"time": "2024-01-11T04:55:48+00:00",
|
||||||
"type": "wordpress-plugin",
|
"type": "wordpress-plugin",
|
||||||
"extra": {
|
"extra": {
|
||||||
"phpcodesniffer-search-depth": 2
|
"phpcodesniffer-search-depth": 2
|
||||||
@@ -209,7 +209,7 @@
|
|||||||
"description": "Sell products and services with recurring payments in your WooCommerce Store.",
|
"description": "Sell products and services with recurring payments in your WooCommerce Store.",
|
||||||
"homepage": "https://github.com/Automattic/woocommerce-subscriptions-core",
|
"homepage": "https://github.com/Automattic/woocommerce-subscriptions-core",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/Automattic/woocommerce-subscriptions-core/tree/6.6.0",
|
"source": "https://github.com/Automattic/woocommerce-subscriptions-core/tree/6.7.0",
|
||||||
"issues": "https://github.com/Automattic/woocommerce-subscriptions-core/issues"
|
"issues": "https://github.com/Automattic/woocommerce-subscriptions-core/issues"
|
||||||
},
|
},
|
||||||
"install-path": "../woocommerce/subscriptions-core"
|
"install-path": "../woocommerce/subscriptions-core"
|
||||||
|
18
vendor/composer/installed.php
vendored
18
vendor/composer/installed.php
vendored
@@ -1,9 +1,9 @@
|
|||||||
<?php return array(
|
<?php return array(
|
||||||
'root' => array(
|
'root' => array(
|
||||||
'name' => 'woocommerce/woocommerce-subscriptions',
|
'name' => 'woocommerce/woocommerce-subscriptions',
|
||||||
'pretty_version' => 'dev-release/5.8.0',
|
'pretty_version' => 'dev-release/5.9.0',
|
||||||
'version' => 'dev-release/5.8.0',
|
'version' => 'dev-release/5.9.0',
|
||||||
'reference' => '49bca69e2b17a445dc250b21c753175bdd9ed2c6',
|
'reference' => '559969625c750b519df548291b5ba9280cdf8690',
|
||||||
'type' => 'wordpress-plugin',
|
'type' => 'wordpress-plugin',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -32,18 +32,18 @@
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
'woocommerce/subscriptions-core' => array(
|
'woocommerce/subscriptions-core' => array(
|
||||||
'pretty_version' => '6.6.0',
|
'pretty_version' => '6.7.0',
|
||||||
'version' => '6.6.0.0',
|
'version' => '6.7.0.0',
|
||||||
'reference' => '5abcf9aac4e53ad9bdcf3752a34a04ae42261bac',
|
'reference' => '2531db11c67a060cbb06c6246c162688a2c9eccb',
|
||||||
'type' => 'wordpress-plugin',
|
'type' => 'wordpress-plugin',
|
||||||
'install_path' => __DIR__ . '/../woocommerce/subscriptions-core',
|
'install_path' => __DIR__ . '/../woocommerce/subscriptions-core',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'woocommerce/woocommerce-subscriptions' => array(
|
'woocommerce/woocommerce-subscriptions' => array(
|
||||||
'pretty_version' => 'dev-release/5.8.0',
|
'pretty_version' => 'dev-release/5.9.0',
|
||||||
'version' => 'dev-release/5.8.0',
|
'version' => 'dev-release/5.9.0',
|
||||||
'reference' => '49bca69e2b17a445dc250b21c753175bdd9ed2c6',
|
'reference' => '559969625c750b519df548291b5ba9280cdf8690',
|
||||||
'type' => 'wordpress-plugin',
|
'type' => 'wordpress-plugin',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
@@ -1,5 +1,10 @@
|
|||||||
*** WooCommerce Subscriptions Core Changelog ***
|
*** WooCommerce Subscriptions Core Changelog ***
|
||||||
|
|
||||||
|
= 6.7.0 - 2024-01-11 =
|
||||||
|
* Update - Changed the edit subscription product "Expire after" (Subscription length) so it more clearly describes when a subscription will automatically stop renewing.
|
||||||
|
* Update - Log all exceptions caught by WooCommerce while processing a subscription scheduled action.
|
||||||
|
* Fix - Resolved an issue that caused ordering the Admin Subscriptions List Table to not work when HPOS is enabled.
|
||||||
|
|
||||||
= 6.6.0 - 2023-12-20 =
|
= 6.6.0 - 2023-12-20 =
|
||||||
* 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 - 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 - Prevents a PHP fatal error that occurs when the cart contains a renewal order item that no longer exists.
|
||||||
|
@@ -338,10 +338,10 @@ class WC_Subscriptions_Admin {
|
|||||||
array(
|
array(
|
||||||
'id' => '_subscription_length',
|
'id' => '_subscription_length',
|
||||||
'class' => 'wc_input_subscription_length select short wc-enhanced-select',
|
'class' => 'wc_input_subscription_length select short wc-enhanced-select',
|
||||||
'label' => __( 'Expire after', 'woocommerce-subscriptions' ),
|
'label' => __( 'Stop renewing after', 'woocommerce-subscriptions' ),
|
||||||
'options' => wcs_get_subscription_ranges( $chosen_period ),
|
'options' => wcs_get_subscription_ranges( $chosen_period ),
|
||||||
'desc_tip' => true,
|
'desc_tip' => true,
|
||||||
'description' => __( 'Automatically expire the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date.', 'woocommerce-subscriptions' ),
|
'description' => __( 'Automatically stop renewing the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date.', 'woocommerce-subscriptions' ),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -479,7 +479,7 @@ class WC_Subscriptions_Admin {
|
|||||||
<option value="variable_subscription_sign_up_fee"><?php esc_html_e( 'Subscription sign-up fee', 'woocommerce-subscriptions' ); ?></option>
|
<option value="variable_subscription_sign_up_fee"><?php esc_html_e( 'Subscription sign-up fee', 'woocommerce-subscriptions' ); ?></option>
|
||||||
<option value="variable_subscription_period_interval"><?php esc_html_e( 'Subscription billing interval', 'woocommerce-subscriptions' ); ?></option>
|
<option value="variable_subscription_period_interval"><?php esc_html_e( 'Subscription billing interval', 'woocommerce-subscriptions' ); ?></option>
|
||||||
<option value="variable_subscription_period"><?php esc_html_e( 'Subscription period', 'woocommerce-subscriptions' ); ?></option>
|
<option value="variable_subscription_period"><?php esc_html_e( 'Subscription period', 'woocommerce-subscriptions' ); ?></option>
|
||||||
<option value="variable_subscription_length"><?php esc_html_e( 'Expire after', 'woocommerce-subscriptions' ); ?></option>
|
<option value="variable_subscription_length"><?php esc_html_e( 'Stop renewing after', 'woocommerce-subscriptions' ); ?></option>
|
||||||
<option value="variable_subscription_trial_length"><?php esc_html_e( 'Free trial length', 'woocommerce-subscriptions' ); ?></option>
|
<option value="variable_subscription_trial_length"><?php esc_html_e( 'Free trial length', 'woocommerce-subscriptions' ); ?></option>
|
||||||
<option value="variable_subscription_trial_period"><?php esc_html_e( 'Free trial period', 'woocommerce-subscriptions' ); ?></option>
|
<option value="variable_subscription_trial_period"><?php esc_html_e( 'Free trial period', 'woocommerce-subscriptions' ); ?></option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
|
@@ -204,7 +204,6 @@ class WCS_Admin_Post_Types {
|
|||||||
return $pieces;
|
return $pieces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the dropdown for the product filter
|
* Displays the dropdown for the product filter
|
||||||
*
|
*
|
||||||
@@ -880,6 +879,7 @@ class WCS_Admin_Post_Types {
|
|||||||
$request_query = $this->set_filter_by_customer_query( $request_query );
|
$request_query = $this->set_filter_by_customer_query( $request_query );
|
||||||
$request_query = $this->set_filter_by_product_query( $request_query );
|
$request_query = $this->set_filter_by_product_query( $request_query );
|
||||||
$request_query = $this->set_filter_by_payment_method_query( $request_query );
|
$request_query = $this->set_filter_by_payment_method_query( $request_query );
|
||||||
|
$request_query = $this->set_order_by_query_args( $request_query );
|
||||||
|
|
||||||
return $request_query;
|
return $request_query;
|
||||||
}
|
}
|
||||||
@@ -1021,6 +1021,36 @@ class WCS_Admin_Post_Types {
|
|||||||
return $request_query;
|
return $request_query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the order by query args for the subscriptions list table request on HPOS enabled sites.
|
||||||
|
*
|
||||||
|
* This function is similar to the posts table equivalent function (self::request_query()) except it only sets the order by.
|
||||||
|
*
|
||||||
|
* @param array $request_query The query args sent to wc_get_orders() to populate the list table.
|
||||||
|
* @return array $request_query
|
||||||
|
*/
|
||||||
|
private function set_order_by_query_args( $request_query ) {
|
||||||
|
|
||||||
|
if ( ! isset( $request_query['orderby'] ) ) {
|
||||||
|
return $request_query;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( $request_query['orderby'] ) {
|
||||||
|
case 'last_payment_date':
|
||||||
|
add_filter( 'woocommerce_orders_table_query_clauses', [ $this, 'orders_table_query_clauses' ], 10, 3 );
|
||||||
|
break;
|
||||||
|
case 'start_date':
|
||||||
|
case 'trial_end_date':
|
||||||
|
case 'next_payment_date':
|
||||||
|
case 'end_date':
|
||||||
|
$request_query['meta_key'] = sprintf( '_schedule_%s', str_replace( '_date', '', $request_query['orderby'] ) ); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
|
||||||
|
$request_query['orderby'] = 'meta_value';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $request_query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the 'post__in' query var with a given set of post ids.
|
* Set the 'post__in' query var with a given set of post ids.
|
||||||
*
|
*
|
||||||
@@ -1752,4 +1782,109 @@ class WCS_Admin_Post_Types {
|
|||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds Order table query clauses to order the subscriptions list table by last payment date.
|
||||||
|
*
|
||||||
|
* There are 2 methods we use to order the subscriptions list table by last payment date:
|
||||||
|
* - High performance: This method uses a temporary table to store the last payment date for each subscription.
|
||||||
|
* - Low performance: This method uses a subquery to get the last payment date for each subscription.
|
||||||
|
*
|
||||||
|
* @param string[] $pieces Associative array of the clauses for the query.
|
||||||
|
* @param OrdersTableQuery $query The query object.
|
||||||
|
* @param array $args Query args.
|
||||||
|
*
|
||||||
|
* @return string[] $pieces Associative array of the clauses for the query.
|
||||||
|
*/
|
||||||
|
public function orders_table_query_clauses( $pieces, $query, $args ) {
|
||||||
|
|
||||||
|
if ( ! is_admin() || ! isset( $args['type'] ) || 'shop_subscription' !== $args['type'] ) {
|
||||||
|
return $pieces;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let's check whether we even have the privileges to do the things we want to do
|
||||||
|
if ( $this->is_db_user_privileged() ) {
|
||||||
|
$pieces = self::orders_table_clauses_high_performance( $pieces );
|
||||||
|
} else {
|
||||||
|
$pieces = self::orders_table_clauses_low_performance( $pieces );
|
||||||
|
}
|
||||||
|
|
||||||
|
$query_order = strtoupper( $args['order'] );
|
||||||
|
|
||||||
|
// fields and order are identical in both cases
|
||||||
|
$pieces['fields'] .= ', COALESCE(lp.last_payment, orders.date_created_gmt, 0) as lp';
|
||||||
|
$pieces['orderby'] = "CAST(lp AS DATETIME) {$query_order}";
|
||||||
|
|
||||||
|
return $pieces;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds order table query clauses to sort the subscriptions list table by last payment date.
|
||||||
|
*
|
||||||
|
* This function provides a lower performance method using a subquery to sort by last payment date.
|
||||||
|
* It is a HPOS version of @see self::posts_clauses_low_performance().
|
||||||
|
*
|
||||||
|
* @param string[] $pieces Associative array of the clauses for the query.
|
||||||
|
* @return string[] $pieces Updated associative array of clauses for the query.
|
||||||
|
*/
|
||||||
|
private function orders_table_clauses_low_performance( $pieces ) {
|
||||||
|
$order_datastore = wc_get_container()->get( \Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore::class );
|
||||||
|
$order_table = $order_datastore::get_orders_table_name();
|
||||||
|
$meta_table = $order_datastore::get_meta_table_name();
|
||||||
|
|
||||||
|
$pieces['join'] .= "LEFT JOIN
|
||||||
|
(SELECT
|
||||||
|
MAX( orders.date_created_gmt ) as last_payment,
|
||||||
|
order_meta.meta_value
|
||||||
|
FROM {$meta_table} as order_meta
|
||||||
|
LEFT JOIN {$order_table} orders ON orders.id = order_meta.order_id
|
||||||
|
WHERE order_meta.meta_key = '_subscription_renewal'
|
||||||
|
GROUP BY order_meta.meta_value) lp
|
||||||
|
ON {$order_table}.id = lp.meta_value
|
||||||
|
LEFT JOIN {$order_table} orders on {$order_table}.parent_order_id = orders.ID";
|
||||||
|
|
||||||
|
return $pieces;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds order table query clauses to sort the subscriptions list table by last payment date.
|
||||||
|
*
|
||||||
|
* This function provides a higher performance method using a temporary table to sort by last payment date.
|
||||||
|
* It is a HPOS version of @see self::posts_clauses_high_performance().
|
||||||
|
*
|
||||||
|
* @param string[] $pieces Associative array of the clauses for the query.
|
||||||
|
* @return string[] $pieces Updated associative array of clauses for the query.
|
||||||
|
*/
|
||||||
|
private function orders_table_clauses_high_performance( $pieces ) {
|
||||||
|
global $wpdb;
|
||||||
|
|
||||||
|
$order_datastore = wc_get_container()->get( \Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore::class );
|
||||||
|
$order_table = $order_datastore::get_orders_table_name();
|
||||||
|
$meta_table = $order_datastore::get_meta_table_name();
|
||||||
|
$session = wp_get_session_token();
|
||||||
|
|
||||||
|
$table_name = substr( "{$wpdb->prefix}tmp_{$session}_lastpayment", 0, 64 );
|
||||||
|
|
||||||
|
// Create a temporary table, drop the previous one.
|
||||||
|
$wpdb->query( $wpdb->prepare( 'DROP TEMPORARY TABLE IF EXISTS %s', $table_name ) );
|
||||||
|
|
||||||
|
$wpdb->query(
|
||||||
|
$wpdb->prepare(
|
||||||
|
"CREATE TEMPORARY TABLE %s (id INT PRIMARY KEY, last_payment DATETIME) AS
|
||||||
|
SELECT order_meta.meta_value as id, MAX( orders.date_created_gmt ) as last_payment FROM %s order_meta
|
||||||
|
LEFT JOIN %s as orders ON orders.id = order_meta.order_id
|
||||||
|
WHERE order_meta.meta_key = '_subscription_renewal'
|
||||||
|
GROUP BY order_meta.meta_value",
|
||||||
|
$table_name,
|
||||||
|
$meta_table,
|
||||||
|
$order_table
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$pieces['join'] .= "LEFT JOIN {$table_name} lp
|
||||||
|
ON {$order_table}.id = lp.id
|
||||||
|
LEFT JOIN {$order_table} orders on {$order_table}.parent_order_id = orders.id";
|
||||||
|
|
||||||
|
return $pieces;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,7 +16,7 @@ class WC_Subscriptions_Core_Plugin {
|
|||||||
* The version of subscriptions-core library.
|
* The version of subscriptions-core library.
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $library_version = '6.6.0'; // WRCS: DEFINED_VERSION.
|
protected $library_version = '6.7.0'; // WRCS: DEFINED_VERSION.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The subscription scheduler instance.
|
* The subscription scheduler instance.
|
||||||
|
@@ -145,8 +145,8 @@ class WC_Subscriptions_Manager {
|
|||||||
$renewal_order = wcs_create_renewal_order( $subscription );
|
$renewal_order = wcs_create_renewal_order( $subscription );
|
||||||
|
|
||||||
if ( is_wp_error( $renewal_order ) ) {
|
if ( is_wp_error( $renewal_order ) ) {
|
||||||
// translators: placeholder is an order note.
|
// translators: placeholder %1 is an order note. %2 is the error message that was thrown.
|
||||||
throw new Exception( sprintf( __( 'Error: Unable to create renewal order with note "%s"', 'woocommerce-subscriptions' ), $order_note ) );
|
throw new Exception( sprintf( __( 'Error: Unable to create renewal order with note "%1$s". Message: %2$s', 'woocommerce-subscriptions' ), $order_note, $renewal_order->get_error_message() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,6 +34,13 @@ class WCS_Failed_Scheduled_Action_Manager {
|
|||||||
*/
|
*/
|
||||||
protected $logger;
|
protected $logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exceptions caught by WC while this class is listening to the `woocommerce_caught_exception` action.
|
||||||
|
*
|
||||||
|
* @var Exception[]
|
||||||
|
*/
|
||||||
|
protected $exceptions = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
@@ -55,6 +62,7 @@ class WCS_Failed_Scheduled_Action_Manager {
|
|||||||
add_action( 'action_scheduler_failed_execution', array( $this, 'log_action_scheduler_failure' ), 10, 2 );
|
add_action( 'action_scheduler_failed_execution', array( $this, 'log_action_scheduler_failure' ), 10, 2 );
|
||||||
add_action( 'action_scheduler_unexpected_shutdown', array( $this, 'log_action_scheduler_failure' ), 10, 2 );
|
add_action( 'action_scheduler_unexpected_shutdown', array( $this, 'log_action_scheduler_failure' ), 10, 2 );
|
||||||
add_action( 'admin_notices', array( $this, 'maybe_show_admin_notice' ) );
|
add_action( 'admin_notices', array( $this, 'maybe_show_admin_notice' ) );
|
||||||
|
add_action( 'action_scheduler_begin_execute', array( $this, 'maybe_attach_exception_listener' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -106,6 +114,56 @@ class WCS_Failed_Scheduled_Action_Manager {
|
|||||||
);
|
);
|
||||||
|
|
||||||
update_option( WC_Subscriptions_Admin::$option_prefix . '_failed_scheduled_actions', $failed_scheduled_actions );
|
update_option( WC_Subscriptions_Admin::$option_prefix . '_failed_scheduled_actions', $failed_scheduled_actions );
|
||||||
|
|
||||||
|
// If there is an exception listener and it's caught exceptions, log them for additional debugging.
|
||||||
|
if ( ! empty( $this->exceptions ) ) {
|
||||||
|
foreach ( $this->exceptions as $exception ) {
|
||||||
|
$message = 'Exception: ' . $exception->getMessage() . ' in ' . $exception->getFile() . ':' . $exception->getLine();
|
||||||
|
$this->log( $message . PHP_EOL . $exception->getTraceAsString() );
|
||||||
|
ActionScheduler_Logger::instance()->log( $action_id, $message );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now that we've logged the exceptions, we can detach the exception listener.
|
||||||
|
$this->clear_exceptions_and_detach_listener();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new exception listener when processing subscription-related scheduled actions.
|
||||||
|
*
|
||||||
|
* @param int $action_id The ID of the scheduled action being ran.
|
||||||
|
*/
|
||||||
|
public function maybe_attach_exception_listener( $action_id ) {
|
||||||
|
$action = $this->get_action( $action_id );
|
||||||
|
|
||||||
|
if ( ! $action || ! isset( $this->tracked_scheduled_actions[ $action->get_hook() ] ) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add an action to detach the exception listener and clear the caught exceptions after the scheduled action has been executed.
|
||||||
|
add_action( 'action_scheduler_after_execute', [ $this, 'clear_exceptions_and_detach_listener' ] );
|
||||||
|
|
||||||
|
// Attach the exception listener.
|
||||||
|
add_action( 'woocommerce_caught_exception', [ $this, 'handle_exception' ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an exception to the list of exceptions caught by WC.
|
||||||
|
*
|
||||||
|
* @param Exception $exception The exception that was caught.
|
||||||
|
*/
|
||||||
|
public function handle_exception( $exception ) {
|
||||||
|
$this->exceptions[] = $exception;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the list of exceptions caught by WC and detaches the listener.
|
||||||
|
*
|
||||||
|
* This function is called directly and attached to an action that runs after a scheduled action has finished being executed.
|
||||||
|
*/
|
||||||
|
public function clear_exceptions_and_detach_listener() {
|
||||||
|
$this->exceptions = [];
|
||||||
|
remove_action( 'woocommerce_caught_exception', [ $this, 'handle_exception' ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -218,17 +218,25 @@ function wcs_create_order_from_subscription( $subscription, $type ) {
|
|||||||
// Delete the transient that caches whether the order needs processing. Because we've added line items, the order may now need processing.
|
// Delete the transient that caches whether the order needs processing. Because we've added line items, the order may now need processing.
|
||||||
delete_transient( 'wc_order_' . $new_order->get_id() . '_needs_processing' );
|
delete_transient( 'wc_order_' . $new_order->get_id() . '_needs_processing' );
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fetch a fresh instance of the order because the current order instance has an empty line item cache generated before we had copied the line items.
|
||||||
|
* Fetching a new instance will ensure the line items are available via $new_order->get_items().
|
||||||
|
*/
|
||||||
|
$order = wc_get_order( $new_order->get_id() );
|
||||||
|
|
||||||
|
if ( ! $order ) {
|
||||||
|
// translators: placeholder %1 is the order type. %2 is the subscription ID we attempted to create the order for.
|
||||||
|
throw new Exception( sprintf( __( 'There was an error fetching the new order (%1$s) for subscription %2$d.', 'woocommerce-subscriptions' ), $type, $subscription->get_id() ) );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filters the new order created from the subscription.
|
* Filters the new order created from the subscription.
|
||||||
*
|
*
|
||||||
* Fetches a fresh instance of the order because the current order instance has an empty line item cache generated before we had copied the line items.
|
|
||||||
* Fetching a new instance will ensure the line items are available via $new_order->get_items().
|
|
||||||
*
|
|
||||||
* @param WC_Order $new_order The new order created from the subscription.
|
* @param WC_Order $new_order The new order created from the subscription.
|
||||||
* @param WC_Subscription $subscription The subscription the order was created from.
|
* @param WC_Subscription $subscription The subscription the order was created from.
|
||||||
* @param string $type The type of order being created. Either 'renewal_order' or 'resubscribe_order'.
|
* @param string $type The type of order being created. Either 'renewal_order' or 'resubscribe_order'.
|
||||||
*/
|
*/
|
||||||
return apply_filters( 'wcs_new_order_created', wc_get_order( $new_order->get_id() ), $subscription, $type );
|
return apply_filters( 'wcs_new_order_created', $order, $subscription, $type );
|
||||||
|
|
||||||
} catch ( Exception $e ) {
|
} catch ( Exception $e ) {
|
||||||
// There was an error adding the subscription
|
// There was an error adding the subscription
|
||||||
@@ -250,7 +258,7 @@ function wcs_get_new_order_title( $type ) {
|
|||||||
$type = wcs_validate_new_order_type( $type );
|
$type = wcs_validate_new_order_type( $type );
|
||||||
|
|
||||||
// translators: placeholders are strftime() strings.
|
// translators: placeholders are strftime() strings.
|
||||||
$order_date = strftime( _x( '%b %d, %Y @ %I:%M %p', 'Used in subscription post title. "Subscription renewal order - <this>"', 'woocommerce-subscriptions' ) ); // phpcs:ignore WordPress.WP.I18n.UnorderedPlaceholdersText
|
$order_date = ( new DateTime( 'now' ) )->format( _x( 'M d, Y @ h:i A', 'Order date parsed by DateTime::format', 'woocommerce-subscriptions' ) );
|
||||||
|
|
||||||
switch ( $type ) {
|
switch ( $type ) {
|
||||||
case 'renewal_order':
|
case 'renewal_order':
|
||||||
|
@@ -85,7 +85,7 @@ function wcs_get_non_cached_subscription_ranges() {
|
|||||||
foreach ( array( 'day', 'week', 'month', 'year' ) as $period ) {
|
foreach ( array( 'day', 'week', 'month', 'year' ) as $period ) {
|
||||||
|
|
||||||
$subscription_lengths = array(
|
$subscription_lengths = array(
|
||||||
_x( 'Never expire', 'Subscription length', 'woocommerce-subscriptions' ),
|
_x( 'Do not stop until cancelled', 'Subscription length', 'woocommerce-subscriptions' ),
|
||||||
);
|
);
|
||||||
|
|
||||||
switch ( $period ) {
|
switch ( $period ) {
|
||||||
|
@@ -63,8 +63,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||||||
</p>
|
</p>
|
||||||
<p class="form-row form-row-last show_if_variable-subscription _subscription_length_field" style="display: none">
|
<p class="form-row form-row-last show_if_variable-subscription _subscription_length_field" style="display: none">
|
||||||
<label for="variable_subscription_length[<?php echo esc_attr( $loop ); ?>]">
|
<label for="variable_subscription_length[<?php echo esc_attr( $loop ); ?>]">
|
||||||
<?php esc_html_e( 'Expire after', 'woocommerce-subscriptions' ); ?>
|
<?php esc_html_e( 'Stop renewing after', 'woocommerce-subscriptions' ); ?>
|
||||||
<?php echo wcs_help_tip( _x( 'Automatically expire the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date.', 'Subscription Length dropdown\'s description in pricing fields', 'woocommerce-subscriptions' ) ); ?>
|
<?php echo wcs_help_tip( _x( 'Automatically stop renewing the subscription after this length of time. This length is in addition to any free trial or amount of time provided before a synchronised first renewal date.', 'Subscription Length dropdown\'s description in pricing fields', 'woocommerce-subscriptions' ) ); ?>
|
||||||
</label>
|
</label>
|
||||||
<select name="variable_subscription_length[<?php echo esc_attr( $loop ); ?>]" class="wc_input_subscription_length wc-enhanced-select">
|
<select name="variable_subscription_length[<?php echo esc_attr( $loop ); ?>]" class="wc_input_subscription_length wc-enhanced-select">
|
||||||
<?php foreach ( wcs_get_subscription_ranges( $billing_period ) as $key => $value ) : ?>
|
<?php foreach ( wcs_get_subscription_ranges( $billing_period ) as $key => $value ) : ?>
|
||||||
|
@@ -6,5 +6,5 @@
|
|||||||
* Author: Automattic
|
* Author: Automattic
|
||||||
* Author URI: https://woocommerce.com/
|
* Author URI: https://woocommerce.com/
|
||||||
* Requires WP: 5.6
|
* Requires WP: 5.6
|
||||||
* Version: 6.6.0
|
* Version: 6.7.0
|
||||||
*/
|
*/
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
* Description: Sell products and services with recurring payments in your WooCommerce Store.
|
* Description: Sell products and services with recurring payments in your WooCommerce Store.
|
||||||
* Author: WooCommerce
|
* Author: WooCommerce
|
||||||
* Author URI: https://woocommerce.com/
|
* Author URI: https://woocommerce.com/
|
||||||
* Version: 5.8.0
|
* Version: 5.9.0
|
||||||
*
|
*
|
||||||
* WC requires at least: 7.7.0
|
* WC requires at least: 7.7.0
|
||||||
* WC tested up to: 8.2.0
|
* WC tested up to: 8.2.0
|
||||||
@@ -77,7 +77,7 @@ class WC_Subscriptions {
|
|||||||
public static $plugin_file = __FILE__;
|
public static $plugin_file = __FILE__;
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public static $version = '5.8.0'; // WRCS: DEFINED_VERSION.
|
public static $version = '5.9.0'; // WRCS: DEFINED_VERSION.
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public static $wc_minimum_supported_version = '7.7';
|
public static $wc_minimum_supported_version = '7.7';
|
||||||
|
Reference in New Issue
Block a user