WordPress Version: 6.4
/**
* Renders an admin notice when a plugin was deactivated during an update.
*
* Displays an admin notice in case a plugin has been deactivated during an
* upgrade due to incompatibility with the current version of WordPress.
*
* @since 5.8.0
* @access private
*
* @global string $pagenow The filename of the current screen.
* @global string $wp_version The WordPress version string.
*/
function deactivated_plugins_notice()
{
if ('plugins.php' === $GLOBALS['pagenow']) {
return;
}
if (!current_user_can('activate_plugins')) {
return;
}
$blog_deactivated_plugins = get_option('wp_force_deactivated_plugins');
$site_deactivated_plugins = array();
if (false === $blog_deactivated_plugins) {
// Option not in database, add an empty array to avoid extra DB queries on subsequent loads.
update_option('wp_force_deactivated_plugins', array());
}
if (is_multisite()) {
$site_deactivated_plugins = get_site_option('wp_force_deactivated_plugins');
if (false === $site_deactivated_plugins) {
// Option not in database, add an empty array to avoid extra DB queries on subsequent loads.
update_site_option('wp_force_deactivated_plugins', array());
}
}
if (empty($blog_deactivated_plugins) && empty($site_deactivated_plugins)) {
// No deactivated plugins.
return;
}
$deactivated_plugins = array_merge($blog_deactivated_plugins, $site_deactivated_plugins);
foreach ($deactivated_plugins as $plugin) {
if (!empty($plugin['version_compatible']) && !empty($plugin['version_deactivated'])) {
$explanation = sprintf(
/* translators: 1: Name of deactivated plugin, 2: Plugin version deactivated, 3: Current WP version, 4: Compatible plugin version. */
__('%1$s %2$s was deactivated due to incompatibility with WordPress %3$s, please upgrade to %1$s %4$s or later.'),
$plugin['plugin_name'],
$plugin['version_deactivated'],
$GLOBALS['wp_version'],
$plugin['version_compatible']
);
} else {
$explanation = sprintf(
/* translators: 1: Name of deactivated plugin, 2: Plugin version deactivated, 3: Current WP version. */
__('%1$s %2$s was deactivated due to incompatibility with WordPress %3$s.'),
$plugin['plugin_name'],
(!empty($plugin['version_deactivated'])) ? $plugin['version_deactivated'] : '',
$GLOBALS['wp_version'],
$plugin['version_compatible']
);
}
$message = sprintf('<strong>%s</strong><br>%s</p><p><a href="%s">%s</a>', sprintf(
/* translators: %s: Name of deactivated plugin. */
__('%s plugin deactivated during WordPress upgrade.'),
$plugin['plugin_name']
), $explanation, esc_url(admin_url('plugins.php?plugin_status=inactive')), __('Go to the Plugins screen'));
wp_admin_notice($message, array('type' => 'warning'));
}
// Empty the options.
update_option('wp_force_deactivated_plugins', array());
if (is_multisite()) {
update_site_option('wp_force_deactivated_plugins', array());
}
}