diff --git a/src/wp-admin/css/site-health.css b/src/wp-admin/css/site-health.css index 29cd443faa..99b179dfe8 100644 --- a/src/wp-admin/css/site-health.css +++ b/src/wp-admin/css/site-health.css @@ -363,6 +363,10 @@ display: none; } +.health-check-accordion-panel a .dashicons { + text-decoration: none; +} + /* Better position for the WordPress admin notices and update nag. */ .site-health .notice { margin: 5px 20px 15px 22px; diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index 15bdf418f3..770ad0feb1 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -289,7 +289,11 @@ class WP_Site_Health { '
%s
', __( 'Plugins extend your site’s functionality with things like contact forms, ecommerce and much more. That means they have deep access to your site, so it’s vital to keep them up to date.' ) ), - 'actions' => '', + 'actions' => sprintf( + '', + esc_url( admin_url( 'plugins.php' ) ), + __( 'Manage your plugins' ) + ), 'test' => 'plugin_version', ); @@ -335,6 +339,12 @@ class WP_Site_Health { $plugins_need_update ) ); + + $result['actions'] .= sprintf( + '', + esc_url( admin_url( 'plugins.php?plugin_status=upgrade' ) ), + __( 'Update your plugins' ) + ); } else { if ( 1 === $plugins_active ) { $result['description'] .= sprintf( @@ -378,6 +388,12 @@ class WP_Site_Health { ), __( 'Inactive plugins are tempting targets for attackers. If you’re not going to use a plugin, we recommend you remove it.' ) ); + + $result['actions'] .= sprintf( + '', + esc_url( admin_url( 'plugins.php?plugin_status=inactive' ) ), + __( 'Manage inactive plugins' ) + ); } return $result; @@ -405,7 +421,11 @@ class WP_Site_Health { '%s
', __( 'Themes add your site’s look and feel. It’s important to keep them up to date, to stay consistent with your brand and keep your site secure.' ) ), - 'actions' => '', + 'actions' => sprintf( + '', + esc_url( admin_url( 'themes.php' ) ), + __( 'Manage your themes' ) + ), 'test' => 'theme_version', ); @@ -627,10 +647,10 @@ class WP_Site_Health { ), 'description' => sprintf( '%s
', - __( 'PHP is the programming language we use to build and maintain WordPress. Newer versions of PHP are both faster and more secure, so updating will have a positive effect on your site’s performance.' ) + __( 'PHP is the programming language we use to build and maintain WordPress. Newer versions of PHP are both faster and more secure, so updating will have a positive effect on your site’s performance.' ) ), 'actions' => sprintf( - '%2$s %3$s', + '', esc_url( wp_get_update_php_url() ), __( 'Learn more about updating PHP' ), /* translators: accessibility text */ @@ -716,12 +736,18 @@ class WP_Site_Health { ), 'description' => sprintf( '%s
%s
', - __( 'PHP modules perform most of the tasks on the server that make your site run.' ), + __( 'PHP modules perform most of the tasks on the server that make your site run. Any changes to these must be made by your server administrator.' ), sprintf( /* translators: %s: Link to the hosting group page about recommended PHP modules. */ - __( 'The Hosting team maintains a list of those modules, both recommended and required, in the team handbook.' ), - /* translators: The address to describe PHP modules and their use. */ - esc_url( __( 'https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions' ) ) + __( 'The WordPress Hosting Team maintains a list of those modules, both recommended and required, in %s.' ), + sprintf( + '%2$s %3$s', + /* translators: Localized team handbook, if one exists. */ + esc_url( __( 'https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions' ) ), + __( 'the team handbook' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) + ) ) ), 'actions' => '', @@ -912,9 +938,16 @@ class WP_Site_Health { ), 'description' => sprintf( '%s
', - __( 'The SQL server is the database where WordPress stores all your site’s content and settings' ) + __( 'The SQL server is a required piece of software for the database WordPress uses to store all your site’s content and settings.' ) + ), + 'actions' => sprintf( + '', + /* translators: Localized version of WordPress requirements if one exists. */ + esc_url( __( 'https://wordpress.org/about/requirements/' ) ), + __( 'Read more about what WordPress requires to run.' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) ), - 'actions' => '', 'test' => 'sql_server', ); @@ -1008,7 +1041,7 @@ class WP_Site_Health { '%s
', sprintf( /* translators: %s: Version number. */ - __( 'WordPress’ utf8mb4 support requires MySQL version %s or greater.' ), + __( 'WordPress’ utf8mb4 support requires MySQL version %s or greater. Please contact your server administrator.' ), '5.5.3' ) ); @@ -1028,7 +1061,7 @@ class WP_Site_Health { '%s
', sprintf( /* translators: %s: Version number. */ - __( 'WordPress’ utf8mb4 support requires MariaDB version %s or greater.' ), + __( 'WordPress’ utf8mb4 support requires MariaDB version %s or greater. Please contact your server administrator.' ), '5.5.0' ) ); @@ -1063,7 +1096,7 @@ class WP_Site_Health { '%s
', sprintf( /* translators: 1: Name of the library, 2: Number of version. */ - __( 'WordPress’ utf8mb4 support requires MySQL client library (%1$s) version %2$s or newer.' ), + __( 'WordPress’ utf8mb4 support requires MySQL client library (%1$s) version %2$s or newer. Please contact your server administrator.' ), 'mysqlnd', '5.0.9' ) @@ -1079,7 +1112,7 @@ class WP_Site_Health { '%s
', sprintf( /* translators: 1: Name of the library, 2: Number of version. */ - __( 'WordPress’ utf8mb4 support requires MySQL client library (%1$s) version %2$s or newer.' ), + __( 'WordPress’ utf8mb4 support requires MySQL client library (%1$s) version %2$s or newer. Please contact your server administrator.' ), 'libmysql', '5.5.3' ) @@ -1134,11 +1167,20 @@ class WP_Site_Health { sprintf( /* translators: 1: The IP address WordPress.org resolves to. 2: The error returned by the lookup. */ __( 'Your site is unable to reach WordPress.org at %1$s, and returned the error: %2$s' ), - gethostbyname( 'wordpress.org' ), + gethostbyname( 'api.wordpress.org' ), $wp_dotorg->get_error_message() ) ) ); + + $result['actions'] = sprintf( + '', + /* translators: Localized Support reference. */ + esc_url( __( 'https://wordpress.org/support' ) ), + __( 'Get help resolving this issue.' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) + ); } return $result; @@ -1169,7 +1211,14 @@ class WP_Site_Health { '%s
', __( 'Debug mode is often enabled to gather more details about an error or site failure, but may contain sensitive information which should not be available on a publicly available website.' ) ), - 'actions' => '', + 'actions' => sprintf( + '', + /* translators: Documentation explaining debugging in WordPress. */ + esc_url( __( 'https://wordpress.org/support/article/debugging-in-wordpress/' ) ), + __( 'Read about debugging in WordPress.' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) + ), 'test' => 'is_in_debug_mode', ); @@ -1232,12 +1281,12 @@ class WP_Site_Health { __( 'An HTTPS connection is needed for many features on the web today, it also gains the trust of your visitors by helping to protecting their online privacy.' ) ), 'actions' => sprintf( - '', - esc_url( - /* translators: Documentation explaining HTTPS and why it should be used. */ - __( 'https://wordpress.org/support/article/why-should-i-use-https/' ) - ), - __( 'Read more about why you should use HTTPS' ) + '', + /* translators: Documentation explaining HTTPS and why it should be used. */ + esc_url( __( 'https://wordpress.org/support/article/why-should-i-use-https/' ) ), + __( 'Read more about why you should use HTTPS' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) ), 'test' => 'https_status', );