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:
commit
a0f427364b
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: minor
|
||||||
|
Type: add
|
||||||
|
|
||||||
|
Add notices about the removal of the Legacy API in WooCommerce 9.0
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Automattic\Jetpack\Constants;
|
use Automattic\Jetpack\Constants;
|
||||||
|
use Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
|
||||||
use Automattic\WooCommerce\Internal\Utilities\Users;
|
use Automattic\WooCommerce\Internal\Utilities\Users;
|
||||||
|
|
||||||
defined( 'ABSPATH' ) || exit;
|
defined( 'ABSPATH' ) || exit;
|
||||||
|
@ -16,6 +17,8 @@ defined( 'ABSPATH' ) || exit;
|
||||||
*/
|
*/
|
||||||
class WC_Admin_Notices {
|
class WC_Admin_Notices {
|
||||||
|
|
||||||
|
use AccessiblePrivateMethods;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores notices.
|
* Stores notices.
|
||||||
*
|
*
|
||||||
|
@ -53,6 +56,7 @@ class WC_Admin_Notices {
|
||||||
add_action( 'woocommerce_installed', array( __CLASS__, 'reset_admin_notices' ) );
|
add_action( 'woocommerce_installed', array( __CLASS__, 'reset_admin_notices' ) );
|
||||||
add_action( 'wp_loaded', array( __CLASS__, 'add_redirect_download_method_notice' ) );
|
add_action( 'wp_loaded', array( __CLASS__, 'add_redirect_download_method_notice' ) );
|
||||||
add_action( 'admin_init', array( __CLASS__, 'hide_notices' ), 20 );
|
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.
|
// @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
|
// 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_notice( 'template_files' );
|
||||||
self::add_min_version_notice();
|
self::add_min_version_notice();
|
||||||
self::add_maxmind_missing_license_key_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§ion=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.
|
* Show a notice.
|
||||||
*
|
*
|
||||||
|
|
|
@ -383,6 +383,25 @@ class WC_Settings_Advanced extends WC_Settings_Page {
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function get_settings_for_legacy_api_section() {
|
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 =
|
$settings =
|
||||||
array(
|
array(
|
||||||
array(
|
array(
|
||||||
|
@ -391,13 +410,7 @@ class WC_Settings_Advanced extends WC_Settings_Page {
|
||||||
'desc' => '',
|
'desc' => '',
|
||||||
'id' => 'legacy_api_options',
|
'id' => 'legacy_api_options',
|
||||||
),
|
),
|
||||||
array(
|
$enable_legacy_api_setting,
|
||||||
'title' => __( 'Legacy API', 'woocommerce' ),
|
|
||||||
'desc' => __( 'Enable the legacy REST API', 'woocommerce' ),
|
|
||||||
'id' => 'woocommerce_api_enabled',
|
|
||||||
'type' => 'checkbox',
|
|
||||||
'default' => 'no',
|
|
||||||
),
|
|
||||||
array(
|
array(
|
||||||
'type' => 'sectionend',
|
'type' => 'sectionend',
|
||||||
'id' => 'legacy_api_options',
|
'id' => 'legacy_api_options',
|
||||||
|
|
Loading…
Reference in New Issue