diff --git a/wp-admin/includes/class-wp-plugins-list-table.php b/wp-admin/includes/class-wp-plugins-list-table.php
index 4777a8edcf..4cc0132b6f 100644
--- a/wp-admin/includes/class-wp-plugins-list-table.php
+++ b/wp-admin/includes/class-wp-plugins-list-table.php
@@ -1567,19 +1567,35 @@ class WP_Plugins_List_Table extends WP_List_Table {
$links[] = $this->get_dependency_view_details_link( $name, $slug );
}
- $dependency_note = __( 'Note: This plugin cannot be activated until the plugins that are required by it are activated.' );
-
- $comma = wp_get_list_item_separator();
- $requires = sprintf(
+ $is_active = is_multisite() ? is_plugin_active_for_network( $dependent ) : is_plugin_active( $dependent );
+ $comma = wp_get_list_item_separator();
+ $requires = sprintf(
/* translators: %s: List of dependency names. */
__( 'Requires: %s' ),
implode( $comma, $links )
);
+ $notice = '';
+ $error_message = '';
+ if ( WP_Plugin_Dependencies::has_unmet_dependencies( $dependent ) ) {
+ if ( $is_active ) {
+ $error_message = __( 'This plugin is active but may not function correctly because required plugins are missing or inactive.' );
+ } else {
+ $error_message = __( 'This plugin cannot be activated because required plugins are missing or inactive.' );
+ }
+ $notice = wp_get_admin_notice(
+ $error_message,
+ array(
+ 'type' => 'error',
+ 'additional_classes' => array( 'inline', 'notice-alt' ),
+ )
+ );
+ }
+
printf(
'
',
$requires,
- $dependency_note
+ $notice
);
}
diff --git a/wp-includes/class-wp-plugin-dependencies.php b/wp-includes/class-wp-plugin-dependencies.php
index 645285a7c0..77444f33d1 100644
--- a/wp-includes/class-wp-plugin-dependencies.php
+++ b/wp-includes/class-wp-plugin-dependencies.php
@@ -369,10 +369,30 @@ class WP_Plugin_Dependencies {
*/
public static function display_admin_notice_for_unmet_dependencies() {
if ( in_array( false, self::get_dependency_filepaths(), true ) ) {
+ $error_message = __( 'Some required plugins are missing or inactive.' );
+
+ if ( is_multisite() ) {
+ if ( current_user_can( 'manage_network_plugins' ) ) {
+ $error_message .= ' ' . sprintf(
+ /* translators: %s: Link to the network plugins page. */
+ __( 'Manage plugins.' ),
+ esc_url( network_admin_url( 'plugins.php' ) )
+ );
+ } else {
+ $error_message .= ' ' . __( 'Please contact your network administrator.' );
+ }
+ } elseif ( 'plugins' !== get_current_screen()->base ) {
+ $error_message .= ' ' . sprintf(
+ /* translators: %s: Link to the plugins page. */
+ __( 'Manage plugins.' ),
+ esc_url( admin_url( 'plugins.php' ) )
+ );
+ }
+
wp_admin_notice(
- __( 'There are additional plugin dependencies that must be installed.' ),
+ $error_message,
array(
- 'type' => 'info',
+ 'type' => 'warning',
)
);
}
diff --git a/wp-includes/version.php b/wp-includes/version.php
index e598607acd..a3bfe6ef2f 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
-$wp_version = '6.5-beta3-57768';
+$wp_version = '6.5-beta3-57769';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.