From 3ff03753790fe460607957439e628ec667b03d8a Mon Sep 17 00:00:00 2001 From: hbhalodia Date: Tue, 28 Jul 2026 15:02:07 +0530 Subject: [PATCH 1/3] Update dependency note for deactivation and deletion --- .../includes/class-wp-plugins-list-table.php | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index d8945e103064e..07522b2945b9a 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -1619,7 +1619,30 @@ protected function add_dependents_to_dependency_plugin_row( $dependency ) { return; } - $dependency_note = __( 'Note: This plugin cannot be deactivated or deleted until the plugins that require it are deactivated or deleted.' ); + $is_active = ( is_multisite() && $this->screen->in_admin( 'network' ) ) + ? is_plugin_active_for_network( $dependency ) + : is_plugin_active( $dependency ); + + if ( $is_active ) { + if ( WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { + $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); + } else { + $dependency_note = ''; + } + } else { + $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); + } + + $dependency_notice = ''; + if ( '' !== $dependency_note ) { + $dependency_notice = wp_get_admin_notice( + $dependency_note, + array( + 'type' => 'error', + 'additional_classes' => array( 'inline' ), + ) + ); + } $comma = wp_get_list_item_separator(); $required_by = sprintf( @@ -1629,9 +1652,9 @@ protected function add_dependents_to_dependency_plugin_row( $dependency ) { ); printf( - '

%1$s

%2$s

', + '

%1$s

%2$s
', $required_by, - $dependency_note + $dependency_notice ); } From 86f099a4a8fc318c96cf7b141fe58c47206b41ea Mon Sep 17 00:00:00 2001 From: hbhalodia Date: Tue, 28 Jul 2026 15:45:56 +0530 Subject: [PATCH 2/3] Add the notice based on the context for single and multisite --- .../includes/class-wp-plugins-list-table.php | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index 07522b2945b9a..754c36e418e38 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -1619,18 +1619,22 @@ protected function add_dependents_to_dependency_plugin_row( $dependency ) { return; } - $is_active = ( is_multisite() && $this->screen->in_admin( 'network' ) ) - ? is_plugin_active_for_network( $dependency ) - : is_plugin_active( $dependency ); + $dependency_note = ''; - if ( $is_active ) { + if ( is_multisite() && $this->screen->in_admin( 'network' ) ) { + $is_network_active = is_plugin_active_for_network( $dependency ); + + if ( $is_network_active && WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { + $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); + } elseif ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $dependency ) ) { + $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); + } + } elseif ( is_plugin_active( $dependency ) ) { if ( WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); - } else { - $dependency_note = ''; + } elseif ( ! is_multisite() && current_user_can( 'delete_plugins' ) ) { + $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); } - } else { - $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); } $dependency_notice = ''; From bcba5b1193cc8a330ad65ded4cb106f5dfdac07d Mon Sep 17 00:00:00 2001 From: hbhalodia Date: Tue, 28 Jul 2026 16:01:16 +0530 Subject: [PATCH 3/3] Fix the note issue with single site --- .../includes/class-wp-plugins-list-table.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index 754c36e418e38..c617d190e9d24 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -1621,18 +1621,20 @@ protected function add_dependents_to_dependency_plugin_row( $dependency ) { $dependency_note = ''; - if ( is_multisite() && $this->screen->in_admin( 'network' ) ) { + if ( $this->screen->in_admin( 'network' ) ) { $is_network_active = is_plugin_active_for_network( $dependency ); - if ( $is_network_active && WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { + if ( $is_network_active && current_user_can( 'manage_network_plugins' ) && WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); - } elseif ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $dependency ) ) { + } elseif ( ! $is_network_active && ! is_plugin_active( $dependency ) && current_user_can( 'delete_plugins' ) ) { $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); } - } elseif ( is_plugin_active( $dependency ) ) { - if ( WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { + } else { + $is_active = is_plugin_active( $dependency ); + + if ( $is_active && current_user_can( 'deactivate_plugin', $dependency ) && WP_Plugin_Dependencies::has_active_dependents( $dependency ) ) { $dependency_note = __( 'Note: This plugin cannot be deactivated until the plugins that require it are deactivated.' ); - } elseif ( ! is_multisite() && current_user_can( 'delete_plugins' ) ) { + } elseif ( ! $is_active && ! is_multisite() && current_user_can( 'delete_plugins' ) ) { $dependency_note = __( 'Note: This plugin cannot be deleted until the plugins that require it are deleted.' ); } }