WP_Debug_Data::debug_data(): array

Static function for generating site debug data when required.

Return

array The debug data for the site.

Source

public static function debug_data() {
	/*
	 * Set up the array that holds all debug information.
	 *
	 * When iterating through the debug data, the ordering of the sections
	 * occurs in insertion-order of the assignments into this array.
	 *
	 * This is the single assignment of the sections before filtering. Null-entries will
	 * be automatically be removed.
	 */
	$info = array(
		'wp-core'             => self::get_wp_core(),
		'wp-paths-sizes'      => self::get_wp_paths_sizes(),
		'wp-dropins'          => self::get_wp_dropins(),
		'wp-active-theme'     => self::get_wp_active_theme(),
		'wp-parent-theme'     => self::get_wp_parent_theme(),
		'wp-themes-inactive'  => self::get_wp_themes_inactive(),
		'wp-mu-plugins'       => self::get_wp_mu_plugins(),
		'wp-plugins-active'   => self::get_wp_plugins_active(),
		'wp-plugins-inactive' => self::get_wp_plugins_inactive(),
		'wp-media'            => self::get_wp_media(),
		'wp-server'           => self::get_wp_server(),
		'wp-database'         => self::get_wp_database(),
		'wp-constants'        => self::get_wp_constants(),
		'wp-filesystem'       => self::get_wp_filesystem(),
	);

	/*
	 * Remove null elements from the array. The individual methods are
	 * allowed to return `null`, which communicates that the category
	 * of debug data isn't relevant and shouldn't be passed through.
	 */
	$info = array_filter(
		$info,
		static function ( $section ) {
			return isset( $section );
		}
	);

	/**
	 * Filters the debug information shown on the Tools -> Site Health -> Info screen.
	 *
	 * Plugin or themes may wish to introduce their own debug information without creating
	 * additional admin pages. They can utilize this filter to introduce their own sections
	 * or add more data to existing sections.
	 *
	 * Array keys for sections added by core are all prefixed with `wp-`. Plugins and themes
	 * should use their own slug as a prefix, both for consistency as well as avoiding
	 * key collisions. Note that the array keys are used as labels for the copied data.
	 *
	 * All strings are expected to be plain text except `$description` that can contain
	 * inline HTML tags (see below).
	 *
	 * @since 5.2.0
	 *
	 * @param array $args {
	 *     The debug information to be added to the core information page.
	 *
	 *     This is an associative multi-dimensional array, up to three levels deep.
	 *     The topmost array holds the sections, keyed by section ID.
	 *
	 *     @type array ...$0 {
	 *         Each section has a `$fields` associative array (see below), and each `$value` in `$fields`
	 *         can be another associative array of name/value pairs when there is more structured data
	 *         to display.
	 *
	 *         @type string $label       Required. The title for this section of the debug output.
	 *         @type string $description Optional. A description for your information section which
	 *                                   may contain basic HTML markup, inline tags only as it is
	 *                                   outputted in a paragraph.
	 *         @type bool   $show_count  Optional. If set to `true`, the amount of fields will be included
	 *                                   in the title for this section. Default false.
	 *         @type bool   $private     Optional. If set to `true`, the section and all associated fields
	 *                                   will be excluded from the copied data. Default false.
	 *         @type array  $fields {
	 *             Required. An associative array containing the fields to be displayed in the section,
	 *             keyed by field ID.
	 *
	 *             @type array ...$0 {
	 *                 An associative array containing the data to be displayed for the field.
	 *
	 *                 @type string $label    Required. The label for this piece of information.
	 *                 @type mixed  $value    Required. The output that is displayed for this field.
	 *                                        Text should be translated. Can be an associative array
	 *                                        that is displayed as name/value pairs.
	 *                                        Accepted types: `string|int|float|(string|int|float)[]`.
	 *                 @type string $debug    Optional. The output that is used for this field when
	 *                                        the user copies the data. It should be more concise and
	 *                                        not translated. If not set, the content of `$value`
	 *                                        is used. Note that the array keys are used as labels
	 *                                        for the copied data.
	 *                 @type bool   $private  Optional. If set to `true`, the field will be excluded
	 *                                        from the copied data, allowing you to show, for example,
	 *                                        API keys here. Default false.
	 *             }
	 *         }
	 *     }
	 * }
	 */
	$info = apply_filters( 'debug_information', $info );

	return $info;
}

Hooks

apply_filters( ‘debug_information’, array $args )

Filters the debug information shown on the Tools -> Site Health -> Info screen.

Changelog

VersionDescription
6.7.0Modularized into separate theme-oriented methods.
5.5.0Added pretty permalinks support information.
5.3.0Added database charset, database collation, and timezone information.
5.2.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    As part of the creation of a Website as a Service (WaaS) architectured from a WordPress multisite, I had to be able to hide sensitive information from the debug tab to the admins of each subsite. After many tests here is the snippet that I currently use and that does the job (to paste in a mu-plugin):

    function wpdocs_debug_data_for_site_health_info( $custom_debug_data ) {
        /* Directories and Sizes */
        if ( isset( $custom_debug_data['wp-paths-sizes']['fields']['wordpress_path'] ) ) {
            $custom_debug_data['wp-paths-sizes']['fields']['wordpress_path']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-paths-sizes']['fields']['wordpress_path'] ) ) {
            $custom_debug_data['wp-paths-sizes']['fields']['uploads_path']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-paths-sizes']['fields']['wordpress_path'] ) ) {
            $custom_debug_data['wp-paths-sizes']['fields']['themes_path']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-paths-sizes']['fields']['wordpress_path'] ) ) {
            $custom_debug_data['wp-paths-sizes']['fields']['plugins_path']['value'] = 'Unavailable';
        }
    
        /* Active Theme */
        if ( isset( $custom_debug_data['wp-active-theme']['fields']['theme_path'] ) ) {
            $custom_debug_data['wp-active-theme']['fields']['theme_path']['value'] = 'Unavailable';
        }
    
        /* Parent Theme */
        if ( isset( $custom_debug_data['wp-parent-theme']['fields']['theme_path'] ) ) {
            $custom_debug_data['wp-parent-theme']['fields']['theme_path']['value'] = 'Unavailable';
        }
    
        /* Server */
        if ( isset( $custom_debug_data['wp-server']['fields']['server_architecture'] ) ) {
            $custom_debug_data['wp-server']['fields']['server_architecture']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-server']['fields']['httpd_software'] ) ) {
            $custom_debug_data['wp-server']['fields']['httpd_software']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-server']['fields']['php_version'] ) ) {
            $custom_debug_data['wp-server']['fields']['php_version']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-server']['fields']['php_sapi'] ) ) {
            $custom_debug_data['wp-server']['fields']['php_sapi']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-server']['fields']['curl_version'] ) ) {
            $custom_debug_data['wp-server']['fields']['curl_version']['value'] = 'Unavailable';
        }
    
        /* Database */
        if ( isset( $custom_debug_data['wp-database']['fields']['extension'] ) ) {
            $custom_debug_data['wp-database']['fields']['extension']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['extension'] ) ) {
            $custom_debug_data['wp-database']['fields']['extension']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['server_version'] ) ) {
            $custom_debug_data['wp-database']['fields']['server_version']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['client_version'] ) ) {
            $custom_debug_data['wp-database']['fields']['client_version']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['database_user'] ) ) {
            $custom_debug_data['wp-database']['fields']['database_user']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['database_host'] ) ) {
            $custom_debug_data['wp-database']['fields']['database_host']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['database_name'] ) ) {
            $custom_debug_data['wp-database']['fields']['database_name']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-database']['fields']['database_prefix'] ) ) {
            $custom_debug_data['wp-database']['fields']['database_prefix']['value'] = 'Unavailable';
        }
    
        /* WordPRess Constants */
        if ( isset( $custom_debug_data['wp-constants']['fields']['ABSPATH'] ) ) {
            $custom_debug_data['wp-constants']['fields']['ABSPATH']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-constants']['fields']['WP_CONTENT_DIR'] ) ) {
            $custom_debug_data['wp-constants']['fields']['WP_CONTENT_DIR']['value'] = 'Unavailable';
        }
    
        if ( isset( $custom_debug_data['wp-constants']['fields']['WP_PLUGIN_DIR'] ) ) {
            $custom_debug_data['wp-constants']['fields']['WP_PLUGIN_DIR']['value'] = 'Unavailable';
        }
    
        return $custom_debug_data;
    }
    add_filter( 'debug_information', 'wpdocs_debug_data_for_site_health_info' );

You must log in before being able to contribute a note or feedback.