Make WordPress Core

Changeset 54169


Ignore:
Timestamp:
09/14/2022 10:17:53 PM (2 years ago)
Author:
azaozz
Message:

Site health:

  • Add a check to wp_check_php_version() whether the current PHP version is lower than the next (desired) minimum version.
  • Set the next desired minimum PHP version to 7.2.
  • Use that check to update the warnings in the wp_dashboard_php_nag() widget, and on the Site Health screen.

Props Clorith, SergeyBiryukov, ironprogrammer, azaozz.
See #56199.

Location:
trunk/src/wp-admin
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/css/dashboard.css

    r53437 r54169  
    11871187}
    11881188
    1189 #dashboard_php_nag.php-insecure .dashicons-warning {
     1189#dashboard_php_nag.php-no-security-updates .dashicons-warning,
     1190#dashboard_php_nag.php-version-lower-than-future-minimum .dashicons-warning {
    11901191    color: #d63638;
    11911192}
     
    11991200}
    12001201
    1201 #dashboard_php_nag h3 {
    1202     font-weight: 600;
    1203 }
    1204 
    12051202#dashboard_php_nag .button .dashicons-external {
    12061203    line-height: 25px;
     1204}
     1205
     1206.bigger-bolder-text {
     1207    font-weight: 600;
     1208    font-size: 14px;
    12071209}
    12081210
  • trunk/src/wp-admin/includes/class-wp-site-health.php

    r54133 r54169  
    742742                sprintf(
    743743                    /* translators: %s: The minimum recommended PHP version. */
    744                     __( 'PHP is the programming language used to build and maintain WordPress. Newer versions of PHP are created with increased performance in mind, so you may see a positive effect on your site’s performance. The minimum recommended version of PHP is %s.' ),
     744                    __( 'PHP is one of the programming languages used to build WordPress. Newer versions of PHP receive regular security updates and may increase your site’s performance. The minimum recommended version of PHP is %s.' ),
    745745                    $response ? $response['recommended_version'] : ''
    746746                )
     
    765765            $result['label'] = sprintf(
    766766                /* translators: %s: The server PHP version. */
    767                 __( 'Your site is running an older version of PHP (%s)' ),
     767                __( 'Your site is running on an older version of PHP (%s)' ),
    768768                PHP_VERSION
    769769            );
    770770            $result['status'] = 'recommended';
     771
     772            return $result;
     773        }
     774
     775        // The PHP version is still receiving security fixes, but is lower than
     776        // the expected minimum version that will be required by WordPress in the near future.
     777        if ( $response['is_secure'] && $response['is_lower_than_future_minimum'] ) {
     778            // The `is_secure` array key name doesn't actually imply this is a secure version of PHP. It only means it receives security updates.
     779
     780            $result['label'] = sprintf(
     781                /* translators: %s: The server PHP version. */
     782                __( 'Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress.' ),
     783                PHP_VERSION
     784            );
     785
     786            $result['status']         = 'critical';
     787            $result['badge']['label'] = __( 'Requirements' );
    771788
    772789            return $result;
     
    777794            $result['label'] = sprintf(
    778795                /* translators: %s: The server PHP version. */
    779                 __( 'Your site is running an older version of PHP (%s), which should be updated' ),
     796                __( 'Your site is running on an older version of PHP (%s), which should be updated' ),
    780797                PHP_VERSION
    781798            );
     
    785802        }
    786803
    787         // Anything no longer secure must be updated.
    788         $result['label'] = sprintf(
    789             /* translators: %s: The server PHP version. */
    790             __( 'Your site is running an outdated version of PHP (%s), which requires an update' ),
    791             PHP_VERSION
    792         );
    793         $result['status']         = 'critical';
     804        // No more security updates for the PHP version, and lower than the expected minimum version required by WordPress.
     805        if ( $response['is_lower_than_future_minimum'] ) {
     806            $message = sprintf(
     807                /* translators: %s: The server PHP version. */
     808                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress.' ),
     809                PHP_VERSION
     810            );
     811        } else {
     812            // No more security updates for the PHP version, must be updated.
     813            $message = sprintf(
     814                /* translators: %s: The server PHP version. */
     815                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates. It should be updated.' ),
     816                PHP_VERSION
     817            );
     818        }
     819
     820        $result['label']  = $message;
     821        $result['status'] = 'critical';
     822
    794823        $result['badge']['label'] = __( 'Security' );
    795824
  • trunk/src/wp-admin/includes/dashboard.php

    r54071 r54169  
    2121    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
    2222
     23    $screen = get_current_screen();
     24
     25    /* Register Widgets and Controls */
    2326    $wp_dashboard_control_callbacks = array();
    24     $screen                         = get_current_screen();
    25 
    26     /* Register Widgets and Controls */
    27 
    28     $response = wp_check_browser_version();
    29 
    30     if ( $response && $response['upgrade'] ) {
     27
     28    // Browser version
     29    $check_browser = wp_check_browser_version();
     30
     31    if ( $check_browser && $check_browser['upgrade'] ) {
    3132        add_filter( 'postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class' );
    3233
    33         if ( $response['insecure'] ) {
     34        if ( $check_browser['insecure'] ) {
    3435            wp_add_dashboard_widget( 'dashboard_browser_nag', __( 'You are using an insecure browser!' ), 'wp_dashboard_browser_nag' );
    3536        } else {
     
    3940
    4041    // PHP Version.
    41     $response = wp_check_php_version();
    42 
    43     if ( $response && isset( $response['is_acceptable'] ) && ! $response['is_acceptable']
    44         && current_user_can( 'update_php' )
    45     ) {
    46         add_filter( 'postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class' );
    47 
    48         wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Recommended' ), 'wp_dashboard_php_nag' );
     42    $check_php = wp_check_php_version();
     43
     44    if ( $check_php && current_user_can( 'update_php' ) ) {
     45        // If "not acceptable" the widget will be shown.
     46        if ( isset( $check_php['is_acceptable'] ) && ! $check_php['is_acceptable'] ) {
     47            add_filter( 'postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class' );
     48
     49            if ( $check_php['is_lower_than_future_minimum'] ) {
     50                wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Required' ), 'wp_dashboard_php_nag' );
     51            } else {
     52                wp_add_dashboard_widget( 'dashboard_php_nag', __( 'PHP Update Recommended' ), 'wp_dashboard_php_nag' );
     53            }
     54        }
    4955    }
    5056
     
    18261832
    18271833    if ( isset( $response['is_secure'] ) && ! $response['is_secure'] ) {
    1828         $msg = sprintf(
     1834        // The `is_secure` array key name doesn't actually imply this is a secure version of PHP. It only means it receives security updates.
     1835
     1836        if ( $response['is_lower_than_future_minimum'] ) {
     1837            $message = sprintf(
     1838                /* translators: %s: The server PHP version. */
     1839                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress.' ),
     1840                PHP_VERSION
     1841            );
     1842        } else {
     1843            $message = sprintf(
     1844                /* translators: %s: The server PHP version. */
     1845                __( 'Your site is running on an outdated version of PHP (%s), which does not receive security updates. It should be updated.' ),
     1846                PHP_VERSION
     1847            );
     1848        }
     1849    } elseif ( $response['is_lower_than_future_minimum'] ) {
     1850        $message = sprintf(
    18291851            /* translators: %s: The server PHP version. */
    1830             __( 'Your site is running an insecure version of PHP (%s), which should be updated.' ),
     1852            __( 'Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress.' ),
    18311853            PHP_VERSION
    18321854        );
    18331855    } else {
    1834         $msg = sprintf(
     1856        $message = sprintf(
    18351857            /* translators: %s: The server PHP version. */
    1836             __( 'Your site is running an outdated version of PHP (%s), which should be updated.' ),
     1858            __( 'Your site is running on an outdated version of PHP (%s), which should be updated.' ),
    18371859            PHP_VERSION
    18381860        );
    18391861    }
    18401862    ?>
    1841     <p><?php echo $msg; ?></p>
    1842 
    1843     <h3><?php _e( 'What is PHP and how does it affect my site?' ); ?></h3>
     1863    <p class="bigger-bolder-text"><?php echo $message; ?></p>
     1864
     1865    <p><?php _e( 'What is PHP and how does it affect my site?' ); ?></p>
    18441866    <p>
     1867        <?php _e( 'PHP is one of the programming languages used to build WordPress. Newer versions of PHP receive regular security updates and may increase your site&#8217;s performance.' ); ?>
    18451868        <?php
    1846         printf(
    1847             /* translators: %s: The minimum recommended PHP version. */
    1848             __( 'PHP is the programming language used to build and maintain WordPress. Newer versions of PHP are created with increased performance in mind, so you may see a positive effect on your site&#8217;s performance. The minimum recommended version of PHP is %s.' ),
    1849             $response ? $response['recommended_version'] : ''
    1850         );
     1869        if ( ! empty( $response['recommended_version'] ) ) {
     1870            printf(
     1871                /* translators: %s: The minimum recommended PHP version. */
     1872                __( 'The minimum recommended version of PHP is %s.' ),
     1873                $response['recommended_version']
     1874            );
     1875        }
    18511876        ?>
    18521877    </p>
     
    18801905    $response = wp_check_php_version();
    18811906
    1882     if ( $response && isset( $response['is_secure'] ) && ! $response['is_secure'] ) {
    1883         $classes[] = 'php-insecure';
     1907    if ( ! $response ) {
     1908        return $classes;
     1909    }
     1910
     1911    if ( isset( $response['is_secure'] ) && ! $response['is_secure'] ) {
     1912        $classes[] = 'php-no-security-updates';
     1913    } elseif ( $response['is_lower_than_future_minimum'] ) {
     1914        $classes[] = 'php-version-lower-than-future-minimum';
    18841915    }
    18851916
  • trunk/src/wp-admin/includes/misc.php

    r54122 r54169  
    15861586         *  'is_supported' - boolean - Whether the PHP version is actively supported.
    15871587         *  'is_secure' - boolean - Whether the PHP version receives security updates.
    1588          *  'is_acceptable' - boolean - Whether the PHP version is still acceptable for WordPress.
     1588         *  'is_acceptable' - boolean - Whether the PHP version is still acceptable or warnings
     1589         *                              should be shown and an update recommended.
    15891590         */
    15901591        $response = json_decode( wp_remote_retrieve_body( $response ), true );
     
    16141615    }
    16151616
     1617    $response['is_lower_than_future_minimum'] = false;
     1618
     1619    // The minimum supported PHP version will be updated to 7.2. Check if the current version is lower.
     1620    if ( version_compare( $version, '7.2', '<' ) ) {
     1621        $response['is_lower_than_future_minimum'] = true;
     1622
     1623        // Force showing of warnings.
     1624        $response['is_acceptable'] = false;
     1625    }
     1626
    16161627    return $response;
    16171628}
Note: See TracChangeset for help on using the changeset viewer.