Add notices about the removal of the Legacy API in WooCommerce 9.0 (#40535)

More info: https://developer.woocommerce.com/2023/10/02/the-legacy-rest-api-will-move-to-a-dedicated-extension-in-woocommerce-9-0/
This commit is contained in:
Corey McKrill 2023-10-05 17:26:01 -07:00 committed by GitHub
commit a0f427364b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 84 additions and 8 deletions

View File

@ -0,0 +1,4 @@
Significance: minor
Type: add
Add notices about the removal of the Legacy API in WooCommerce 9.0

View File

@ -7,6 +7,7 @@
*/
use Automattic\Jetpack\Constants;
use Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
use Automattic\WooCommerce\Internal\Utilities\Users;
defined( 'ABSPATH' ) || exit;
@ -16,6 +17,8 @@ defined( 'ABSPATH' ) || exit;
*/
class WC_Admin_Notices {
use AccessiblePrivateMethods;
/**
* Stores notices.
*
@ -53,6 +56,7 @@ class WC_Admin_Notices {
add_action( 'woocommerce_installed', array( __CLASS__, 'reset_admin_notices' ) );
add_action( 'wp_loaded', array( __CLASS__, 'add_redirect_download_method_notice' ) );
add_action( 'admin_init', array( __CLASS__, 'hide_notices' ), 20 );
self::add_action( 'admin_init', array( __CLASS__, 'maybe_remove_legacy_api_removal_notice' ), 20 );
// @TODO: This prevents Action Scheduler async jobs from storing empty list of notices during WC installation.
// That could lead to OBW not starting and 'Run setup wizard' notice not appearing in WP admin, which we want
@ -115,8 +119,63 @@ class WC_Admin_Notices {
self::add_notice( 'template_files' );
self::add_min_version_notice();
self::add_maxmind_missing_license_key_notice();
self::maybe_add_legacy_api_removal_notice();
}
// phpcs:disable Generic.Commenting.Todo.TaskFound
/**
* Add an admin notice about the removal of the Legacy REST API if the said API is enabled.
*
* TODO: Change this method in WooCommerce 9.0 so that it checks if the Legacy REST API extension is installed, and if not, it points to the extension URL in the WordPress plugins directory.
*/
private static function maybe_add_legacy_api_removal_notice() {
if ( ! self::must_show_legacy_api_removal_notice() ) {
return;
}
self::add_custom_notice(
'legacy_api_removed_in_woo_90',
sprintf(
'%s%s',
sprintf(
'<h4>%s</h4>',
esc_html__( 'The WooCommerce Legacy REST API will be removed soon', 'woocommerce' )
),
sprintf(
// translators: Placeholders are URLs.
wpautop( wp_kses_data( __( 'The WooCommerce Legacy REST API, <a href="%1$s">currently enabled in this site</a>, will be removed in WooCommerce 9.0. A separate WooCommerce extension will be available to keep it enabled. <b><a target=”_blank” href="%2$s">Learn more about this change.</a></b>', 'woocommerce' ) ) ),
admin_url( 'admin.php?page=wc-settings&tab=advanced&section=legacy_api' ),
'https://developer.woocommerce.com/2023/10/03/the-legacy-rest-api-will-move-to-a-dedicated-extension-in-woocommerce-9-0/'
)
)
);
}
/**
* Remove the admin notice about the removal of the Legacy REST API if the said API is disabled.
*
* TODO: Change this method in WooCommerce 9.0 so that the notice gets removed if the Legacy REST API extension is installed and active.
*/
private static function maybe_remove_legacy_api_removal_notice() {
if ( self::has_notice( 'legacy_api_removed_in_woo_90' ) && ! self::must_show_legacy_api_removal_notice() ) {
self::remove_notice( 'legacy_api_removed_in_woo_90' );
}
}
/**
* Is it needed to display the legacy API removal notice?
*
* TODO: Change or remove this method in WooCommerce 9.0 accordingly, depending on the changes to maybe_add/remove_legacy_api_removal_notice.
*
* @return bool True if the legacy API removal notice must be displayed.
*/
private static function must_show_legacy_api_removal_notice() {
return 'yes' === get_option( 'woocommerce_api_enabled' ) && ! is_plugin_active( 'woocommerce-legacy-rest-api/woocommerce-legacy-rest-api.php' );
}
// phpcs:enable Generic.Commenting.Todo.TaskFound
/**
* Show a notice.
*
@ -424,7 +483,7 @@ class WC_Admin_Notices {
/**
* Notice about WordPress and PHP minimum requirements.
*
*
* @deprecated 8.2.0 WordPress and PHP minimum requirements notices are no longer shown.
*
* @since 3.6.5

View File

@ -383,6 +383,25 @@ class WC_Settings_Advanced extends WC_Settings_Page {
* @return array
*/
protected function get_settings_for_legacy_api_section() {
$enable_legacy_api_setting = array(
'title' => __( 'Legacy API', 'woocommerce' ),
'desc' => __( 'Enable the legacy REST API', 'woocommerce' ),
'id' => 'woocommerce_api_enabled',
'type' => 'checkbox',
'default' => 'no',
);
if ( ! is_plugin_active( 'woocommerce-legacy-rest-api/woocommerce-legacy-rest-api.php' ) ) {
$enable_legacy_api_setting['desc_tip'] = sprintf(
// translators: Placeholder is a URL.
__(
'⚠️ <b>The Legacy REST API will be removed in WooCommerce 9.0.</b> A separate WooCommerce extension will soon be available to keep it enabled. <b><a target=”_blank” href="%s">Learn more about this change.</a></b>',
'woocommerce'
),
'https://developer.woocommerce.com/2023/10/03/the-legacy-rest-api-will-move-to-a-dedicated-extension-in-woocommerce-9-0/'
);
}
$settings =
array(
array(
@ -391,13 +410,7 @@ class WC_Settings_Advanced extends WC_Settings_Page {
'desc' => '',
'id' => 'legacy_api_options',
),
array(
'title' => __( 'Legacy API', 'woocommerce' ),
'desc' => __( 'Enable the legacy REST API', 'woocommerce' ),
'id' => 'woocommerce_api_enabled',
'type' => 'checkbox',
'default' => 'no',
),
$enable_legacy_api_setting,
array(
'type' => 'sectionend',
'id' => 'legacy_api_options',