diff --git a/src/wp-admin/includes/dashboard.php b/src/wp-admin/includes/dashboard.php index e3e8cca9a7..cf13fcfc24 100644 --- a/src/wp-admin/includes/dashboard.php +++ b/src/wp-admin/includes/dashboard.php @@ -1647,6 +1647,7 @@ function wp_dashboard_php_nag() { '; } + +/** + * Gets the URL for directly updating the PHP version the site is running on. + * + * A URL will only be returned if the `WP_DIRECT_UPDATE_PHP_URL` environment variable is specified or + * by using the {@see 'wp_direct_php_update_url'} filter. This allows hosts to send users directly to + * the page where they can update PHP to a newer version. + * + * @return string URL for directly updating PHP or empty string. + */ +function wp_get_direct_php_update_url() { + $direct_update_url = ''; + + if ( false !== getenv( 'WP_DIRECT_UPDATE_PHP_URL' ) ) { + $direct_update_url = getenv( 'WP_DIRECT_UPDATE_PHP_URL' ); + } + + /** + * Filters the URL for directly updating the PHP version the site is running on from the host. + * + * @since 5.1.1 + * + * @param string $direct_update_url URL for directly updating PHP. + */ + $direct_update_url = apply_filters( 'wp_direct_php_update_url', $direct_update_url ); + + return $direct_update_url; +} + +/** + * Display a button directly linking to a PHP update process. + * + * This provides hosts with a way for users to be sent directly to their PHP update process. + * + * The button is only displayed if a URL is returned by `wp_get_direct_php_update_url()`. + * + * @since 5.1.1 + */ +function wp_direct_php_update_button() { + $direct_update_url = wp_get_direct_php_update_url(); + + if ( empty( $direct_update_url ) ) { + return; + } + + echo '

'; + printf( + '%2$s %3$s', + esc_url( $direct_update_url ), + __( 'Update PHP' ), + /* translators: accessibility text */ + __( '(opens in a new tab)' ) + ); + echo '

'; +}