Make WordPress Core

Changeset 59174


Ignore:
Timestamp:
10/05/2024 03:57:06 PM (2 years ago)
Author:
dmsnell
Message:

WP_Debug_Data: Extract wp-core data into separate methods.

This is the ninth part in a larger modularization of the data in WP_Debug_Data. Previously this was a single massive method drawing in debug data from various groups of related data, where the groups were independent from each other.

This patch separates the tenth of twelve groups, the wp-core info, into a separate method focused on that data.

This work precedes changes to make the WP_Debug_Data class more extensible for better use by plugin and theme code.

Developed in https://github.com/wordpress/wordpress-develop/pull/7357
Discussed in https://core.trac.wordpress.org/ticket/61648

Props apermo, dmsnell.
See #61648.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-debug-data.php

    r59172 r59174  
    4040                // Save few function calls.
    4141                $upload_dir             = wp_upload_dir();
    42                 $permalink_structure    = get_option( 'permalink_structure' );
    43                 $is_ssl                 = is_ssl();
    4442                $is_multisite           = is_multisite();
    45                 $users_can_register     = get_option( 'users_can_register' );
    46                 $blog_public            = get_option( 'blog_public' );
    47                 $default_comment_status = get_option( 'default_comment_status' );
    48                 $environment_type       = wp_get_environment_type();
    49                 $core_version           = wp_get_wp_version();
    50                 $core_updates           = get_core_updates();
    51                 $core_update_needed     = '';
    52 
    53                 if ( is_array( $core_updates ) ) {
    54                         foreach ( $core_updates as $core => $update ) {
    55                                 if ( 'upgrade' === $update->response ) {
    56                                         /* translators: %s: Latest WordPress version number. */
    57                                         $core_update_needed = ' ' . sprintf( __( '(Latest version: %s)' ), $update->version );
    58                                 } else {
    59                                         $core_update_needed = '';
    60                                 }
    61                         }
    62                 }
    6343
    6444                /*
     
    7656                 */
    7757                $info = array(
    78                         'wp-core'             => array(),
     58                        'wp-core'             => self::get_wp_core(),
    7959                        'wp-paths-sizes'      => array(),
    8060                        'wp-dropins'          => self::get_wp_dropins(),
     
    9777                }
    9878
    99                 $info['wp-core'] = array(
    100                         'label'  => __( 'WordPress' ),
    101                         'fields' => array(
    102                                 'version'                => array(
    103                                         'label' => __( 'Version' ),
    104                                         'value' => $core_version . $core_update_needed,
    105                                         'debug' => $core_version,
    106                                 ),
    107                                 'site_language'          => array(
    108                                         'label' => __( 'Site Language' ),
    109                                         'value' => get_locale(),
    110                                 ),
    111                                 'user_language'          => array(
    112                                         'label' => __( 'User Language' ),
    113                                         'value' => get_user_locale(),
    114                                 ),
    115                                 'timezone'               => array(
    116                                         'label' => __( 'Timezone' ),
    117                                         'value' => wp_timezone_string(),
    118                                 ),
    119                                 'home_url'               => array(
    120                                         'label'   => __( 'Home URL' ),
    121                                         'value'   => get_bloginfo( 'url' ),
    122                                         'private' => true,
    123                                 ),
    124                                 'site_url'               => array(
    125                                         'label'   => __( 'Site URL' ),
    126                                         'value'   => get_bloginfo( 'wpurl' ),
    127                                         'private' => true,
    128                                 ),
    129                                 'permalink'              => array(
    130                                         'label' => __( 'Permalink structure' ),
    131                                         'value' => $permalink_structure ? $permalink_structure : __( 'No permalink structure set' ),
    132                                         'debug' => $permalink_structure,
    133                                 ),
    134                                 'https_status'           => array(
    135                                         'label' => __( 'Is this site using HTTPS?' ),
    136                                         'value' => $is_ssl ? __( 'Yes' ) : __( 'No' ),
    137                                         'debug' => $is_ssl,
    138                                 ),
    139                                 'multisite'              => array(
    140                                         'label' => __( 'Is this a multisite?' ),
    141                                         'value' => $is_multisite ? __( 'Yes' ) : __( 'No' ),
    142                                         'debug' => $is_multisite,
    143                                 ),
    144                                 'user_registration'      => array(
    145                                         'label' => __( 'Can anyone register on this site?' ),
    146                                         'value' => $users_can_register ? __( 'Yes' ) : __( 'No' ),
    147                                         'debug' => $users_can_register,
    148                                 ),
    149                                 'blog_public'            => array(
    150                                         'label' => __( 'Is this site discouraging search engines?' ),
    151                                         'value' => $blog_public ? __( 'No' ) : __( 'Yes' ),
    152                                         'debug' => $blog_public,
    153                                 ),
    154                                 'default_comment_status' => array(
    155                                         'label' => __( 'Default comment status' ),
    156                                         'value' => 'open' === $default_comment_status ? _x( 'Open', 'comment status' ) : _x( 'Closed', 'comment status' ),
    157                                         'debug' => $default_comment_status,
    158                                 ),
    159                                 'environment_type'       => array(
    160                                         'label' => __( 'Environment type' ),
    161                                         'value' => $environment_type,
    162                                         'debug' => $environment_type,
    163                                 ),
    164                         ),
    165                 );
    166 
    16779                if ( ! $is_multisite ) {
    16880                        $info['wp-paths-sizes'] = array(
     
    188100                        'fields'     => array(),
    189101                );
    190 
    191                 // Conditionally add debug information for multisite setups.
    192                 if ( is_multisite() ) {
    193                         $site_id = get_current_blog_id();
    194 
    195                         $info['wp-core']['fields']['site_id'] = array(
    196                                 'label' => __( 'Site ID' ),
    197                                 'value' => $site_id,
    198                                 'debug' => $site_id,
    199                         );
    200 
    201                         $network_query = new WP_Network_Query();
    202                         $network_ids   = $network_query->query(
    203                                 array(
    204                                         'fields'        => 'ids',
    205                                         'number'        => 100,
    206                                         'no_found_rows' => false,
    207                                 )
    208                         );
    209 
    210                         $site_count = 0;
    211                         foreach ( $network_ids as $network_id ) {
    212                                 $site_count += get_blog_count( $network_id );
    213                         }
    214 
    215                         $info['wp-core']['fields']['site_count'] = array(
    216                                 'label' => __( 'Site count' ),
    217                                 'value' => $site_count,
    218                         );
    219 
    220                         $info['wp-core']['fields']['network_count'] = array(
    221                                 'label' => __( 'Network count' ),
    222                                 'value' => $network_query->found_networks,
    223                         );
    224                 }
    225 
    226                 $info['wp-core']['fields']['user_count'] = array(
    227                         'label' => __( 'User count' ),
    228                         'value' => get_user_count(),
    229                 );
    230 
    231                 // WordPress features requiring processing.
    232                 $wp_dotorg = wp_remote_get( 'https://wordpress.org', array( 'timeout' => 10 ) );
    233 
    234                 if ( ! is_wp_error( $wp_dotorg ) ) {
    235                         $info['wp-core']['fields']['dotorg_communication'] = array(
    236                                 'label' => __( 'Communication with WordPress.org' ),
    237                                 'value' => __( 'WordPress.org is reachable' ),
    238                                 'debug' => 'true',
    239                         );
    240                 } else {
    241                         $info['wp-core']['fields']['dotorg_communication'] = array(
    242                                 'label' => __( 'Communication with WordPress.org' ),
    243                                 'value' => sprintf(
    244                                         /* translators: 1: The IP address WordPress.org resolves to. 2: The error returned by the lookup. */
    245                                         __( 'Unable to reach WordPress.org at %1$s: %2$s' ),
    246                                         gethostbyname( 'wordpress.org' ),
    247                                         $wp_dotorg->get_error_message()
    248                                 ),
    249                                 'debug' => $wp_dotorg->get_error_message(),
    250                         );
    251                 }
    252102
    253103                // Remove accordion for Directories and Sizes if in Multisite.
     
    699549
    700550        /**
     551         * Gets the WordPress core section of the debug data.
     552         *
     553         * @since 6.7.0
     554         *
     555         * @return array
     556         */
     557        private static function get_wp_core(): array {
     558                // Save few function calls.
     559                $permalink_structure    = get_option( 'permalink_structure' );
     560                $is_ssl                 = is_ssl();
     561                $users_can_register     = get_option( 'users_can_register' );
     562                $blog_public            = get_option( 'blog_public' );
     563                $default_comment_status = get_option( 'default_comment_status' );
     564                $environment_type       = wp_get_environment_type();
     565                $core_version           = wp_get_wp_version();
     566                $core_updates           = get_core_updates();
     567                $core_update_needed     = '';
     568
     569                if ( is_array( $core_updates ) ) {
     570                        foreach ( $core_updates as $core => $update ) {
     571                                if ( 'upgrade' === $update->response ) {
     572                                        /* translators: %s: Latest WordPress version number. */
     573                                        $core_update_needed = ' ' . sprintf( __( '(Latest version: %s)' ), $update->version );
     574                                } else {
     575                                        $core_update_needed = '';
     576                                }
     577                        }
     578                }
     579
     580                $fields = array(
     581                        'version'                => array(
     582                                'label' => __( 'Version' ),
     583                                'value' => $core_version . $core_update_needed,
     584                                'debug' => $core_version,
     585                        ),
     586                        'site_language'          => array(
     587                                'label' => __( 'Site Language' ),
     588                                'value' => get_locale(),
     589                        ),
     590                        'user_language'          => array(
     591                                'label' => __( 'User Language' ),
     592                                'value' => get_user_locale(),
     593                        ),
     594                        'timezone'               => array(
     595                                'label' => __( 'Timezone' ),
     596                                'value' => wp_timezone_string(),
     597                        ),
     598                        'home_url'               => array(
     599                                'label'   => __( 'Home URL' ),
     600                                'value'   => get_bloginfo( 'url' ),
     601                                'private' => true,
     602                        ),
     603                        'site_url'               => array(
     604                                'label'   => __( 'Site URL' ),
     605                                'value'   => get_bloginfo( 'wpurl' ),
     606                                'private' => true,
     607                        ),
     608                        'permalink'              => array(
     609                                'label' => __( 'Permalink structure' ),
     610                                'value' => $permalink_structure ? $permalink_structure : __( 'No permalink structure set' ),
     611                                'debug' => $permalink_structure,
     612                        ),
     613                        'https_status'           => array(
     614                                'label' => __( 'Is this site using HTTPS?' ),
     615                                'value' => $is_ssl ? __( 'Yes' ) : __( 'No' ),
     616                                'debug' => $is_ssl,
     617                        ),
     618                        'multisite'              => array(
     619                                'label' => __( 'Is this a multisite?' ),
     620                                'value' => is_multisite() ? __( 'Yes' ) : __( 'No' ),
     621                                'debug' => is_multisite(),
     622                        ),
     623                        'user_registration'      => array(
     624                                'label' => __( 'Can anyone register on this site?' ),
     625                                'value' => $users_can_register ? __( 'Yes' ) : __( 'No' ),
     626                                'debug' => $users_can_register,
     627                        ),
     628                        'blog_public'            => array(
     629                                'label' => __( 'Is this site discouraging search engines?' ),
     630                                'value' => $blog_public ? __( 'No' ) : __( 'Yes' ),
     631                                'debug' => $blog_public,
     632                        ),
     633                        'default_comment_status' => array(
     634                                'label' => __( 'Default comment status' ),
     635                                'value' => 'open' === $default_comment_status ? _x( 'Open', 'comment status' ) : _x( 'Closed', 'comment status' ),
     636                                'debug' => $default_comment_status,
     637                        ),
     638                        'environment_type'       => array(
     639                                'label' => __( 'Environment type' ),
     640                                'value' => $environment_type,
     641                                'debug' => $environment_type,
     642                        ),
     643                );
     644
     645                // Conditionally add debug information for multisite setups.
     646                if ( is_multisite() ) {
     647                        $site_id = get_current_blog_id();
     648
     649                        $fields['site_id'] = array(
     650                                'label' => __( 'Site ID' ),
     651                                'value' => $site_id,
     652                                'debug' => $site_id,
     653                        );
     654
     655                        $network_query = new WP_Network_Query();
     656                        $network_ids   = $network_query->query(
     657                                array(
     658                                        'fields'        => 'ids',
     659                                        'number'        => 100,
     660                                        'no_found_rows' => false,
     661                                )
     662                        );
     663
     664                        $site_count = 0;
     665                        foreach ( $network_ids as $network_id ) {
     666                                $site_count += get_blog_count( $network_id );
     667                        }
     668
     669                        $fields['site_count'] = array(
     670                                'label' => __( 'Site count' ),
     671                                'value' => $site_count,
     672                        );
     673
     674                        $fields['network_count'] = array(
     675                                'label' => __( 'Network count' ),
     676                                'value' => $network_query->found_networks,
     677                        );
     678                }
     679
     680                $fields['user_count'] = array(
     681                        'label' => __( 'User count' ),
     682                        'value' => get_user_count(),
     683                );
     684
     685                // WordPress features requiring processing.
     686                $wp_dotorg = wp_remote_get( 'https://wordpress.org', array( 'timeout' => 10 ) );
     687
     688                if ( ! is_wp_error( $wp_dotorg ) ) {
     689                        $fields['dotorg_communication'] = array(
     690                                'label' => __( 'Communication with WordPress.org' ),
     691                                'value' => __( 'WordPress.org is reachable' ),
     692                                'debug' => 'true',
     693                        );
     694                } else {
     695                        $fields['dotorg_communication'] = array(
     696                                'label' => __( 'Communication with WordPress.org' ),
     697                                'value' => sprintf(
     698                                /* translators: 1: The IP address WordPress.org resolves to. 2: The error returned by the lookup. */
     699                                        __( 'Unable to reach WordPress.org at %1$s: %2$s' ),
     700                                        gethostbyname( 'wordpress.org' ),
     701                                        $wp_dotorg->get_error_message()
     702                                ),
     703                                'debug' => $wp_dotorg->get_error_message(),
     704                        );
     705                }
     706
     707                return array(
     708                        'label'  => __( 'WordPress' ),
     709                        'fields' => $fields,
     710                );
     711        }
     712
     713        /**
    701714         * Gets the WordPress drop-in section of the debug data.
    702715         *
Note: See TracChangeset for help on using the changeset viewer.