Make WordPress Core


Ignore:
Timestamp:
03/05/2024 06:46:34 AM (3 years ago)
Author:
desrosj
Message:

Plugins: Improve plugin dependency related error messages.

This makes several refinements to the various error messages displayed throughout the WordPress admin related to plugin dependencies. Additionally, it adds some conditions to display more appropriate messages for multisite installs with proper context to the user’s capabilities.

Props costdev, swissspidy, afragen, huzaifaalmesbah, knutsp.
Fixes #60465.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/plugin.php

    r57658 r57770  
    12031203
    12041204        if ( WP_Plugin_Dependencies::has_unmet_dependencies( $plugin ) ) {
    1205                 $dependencies       = WP_Plugin_Dependencies::get_dependencies( $plugin );
    1206                 $unmet_dependencies = array();
    1207 
    1208                 foreach ( $dependencies as $dependency ) {
     1205                $dependency_names       = WP_Plugin_Dependencies::get_dependency_names( $plugin );
     1206                $unmet_dependencies     = array();
     1207                $unmet_dependency_names = array();
     1208
     1209                foreach ( $dependency_names as $dependency => $dependency_name ) {
    12091210                        $dependency_file = WP_Plugin_Dependencies::get_dependency_filepath( $dependency );
    12101211
    12111212                        if ( false === $dependency_file ) {
    1212                                 $unmet_dependencies['not_installed'][] = $dependency;
     1213                                $unmet_dependencies['not_installed'][ $dependency ] = $dependency_name;
     1214                                $unmet_dependency_names[]                           = $dependency_name;
    12131215                        } elseif ( is_plugin_inactive( $dependency_file ) ) {
    1214                                 $unmet_dependencies['inactive'][] = $dependency;
     1216                                $unmet_dependencies['inactive'][ $dependency ] = $dependency_name;
     1217                                $unmet_dependency_names[]                      = $dependency_name;
    12151218                        }
     1219                }
     1220
     1221                $error_message = sprintf(
     1222                        /* translators: 1: Plugin name, 2: Number of plugins, 3: A comma-separated list of plugin names. */
     1223                        _n(
     1224                                '<strong>Error:</strong> %1$s requires %2$d plugin to be installed and activated: %3$s.',
     1225                                '<strong>Error:</strong> %1$s requires %2$d plugins to be installed and activated: %3$s.',
     1226                                count( $unmet_dependency_names )
     1227                        ),
     1228                        $plugin_headers['Name'],
     1229                        count( $unmet_dependency_names ),
     1230                        implode( wp_get_list_item_separator(), $unmet_dependency_names )
     1231                );
     1232
     1233                if ( is_multisite() ) {
     1234                        if ( current_user_can( 'manage_network_plugins' ) ) {
     1235                                $error_message .= ' ' . sprintf(
     1236                                        /* translators: %s: Link to the plugins page. */
     1237                                        __( '<a href="%s">Manage plugins</a>.' ),
     1238                                        esc_url( network_admin_url( 'plugins.php' ) )
     1239                                );
     1240                        } else {
     1241                                $error_message .= ' ' . __( 'Please contact your network administrator.' );
     1242                        }
     1243                } else {
     1244                        $error_message .= ' ' . sprintf(
     1245                                /* translators: %s: Link to the plugins page. */
     1246                                __( '<a href="%s">Manage plugins</a>.' ),
     1247                                esc_url( admin_url( 'plugins.php' ) )
     1248                        );
    12161249                }
    12171250
    12181251                return new WP_Error(
    12191252                        'plugin_missing_dependencies',
    1220                         '<p>' . sprintf(
    1221                                 /* translators: %s: Plugin name. */
    1222                                 _x( '<strong>Error:</strong> %s requires plugins that are not installed or activated.', 'plugin' ),
    1223                                 $plugin_headers['Name']
    1224                         ) . '</p>',
     1253                        "<p>{$error_message}</p>",
    12251254                        $unmet_dependencies
    12261255                );
Note: See TracChangeset for help on using the changeset viewer.