Static function for generating site debug data when required.
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.
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):