WP_Debug_Data::get_wp_themes_inactive()private staticWP 6.7.0

Gets the WordPress inactive themes section of the debug data.

Method of the class: WP_Debug_Data{}

Hooks from the method

Return

Array.

Usage

$result = WP_Debug_Data::get_wp_themes_inactive(): array;

Changelog

Since 6.7.0 Introduced.

WP_Debug_Data::get_wp_themes_inactive() code WP 6.8

private static function get_wp_themes_inactive(): array {
	$active_theme  = wp_get_theme();
	$parent_theme  = $active_theme->parent();
	$theme_updates = get_theme_updates();

	$auto_updates         = array();
	$auto_updates_enabled = wp_is_auto_update_enabled_for_type( 'theme' );
	if ( $auto_updates_enabled ) {
		$auto_updates = (array) get_site_option( 'auto_update_themes', array() );
	}

	// Populate a list of all themes available in the installation.
	$all_themes = wp_get_themes();
	$fields     = array();

	foreach ( $all_themes as $theme_slug => $theme ) {
		// Exclude the currently active theme from the list of all themes.
		if ( $active_theme->stylesheet === $theme_slug ) {
			continue;
		}

		// Exclude the currently active parent theme from the list of all themes.
		if ( ! empty( $parent_theme ) && $parent_theme->stylesheet === $theme_slug ) {
			continue;
		}

		$theme_version = $theme->version;
		$theme_author  = $theme->author;

		// Sanitize.
		$theme_author = wp_kses( $theme_author, array() );

		$theme_version_string       = __( 'No version or author information is available.' );
		$theme_version_string_debug = 'undefined';

		if ( ! empty( $theme_version ) && ! empty( $theme_author ) ) {
			/* translators: 1: Theme version number. 2: Theme author name. */
			$theme_version_string       = sprintf( __( 'Version %1$s by %2$s' ), $theme_version, $theme_author );
			$theme_version_string_debug = sprintf( 'version: %s, author: %s', $theme_version, $theme_author );
		} else {
			if ( ! empty( $theme_author ) ) {
				/* translators: %s: Theme author name. */
				$theme_version_string       = sprintf( __( 'By %s' ), $theme_author );
				$theme_version_string_debug = sprintf( 'author: %s, version: (undefined)', $theme_author );
			}

			if ( ! empty( $theme_version ) ) {
				/* translators: %s: Theme version number. */
				$theme_version_string       = sprintf( __( 'Version %s' ), $theme_version );
				$theme_version_string_debug = sprintf( 'author: (undefined), version: %s', $theme_version );
			}
		}

		if ( array_key_exists( $theme_slug, $theme_updates ) ) {
			/* translators: %s: Latest theme version number. */
			$theme_version_string       .= ' ' . sprintf( __( '(Latest version: %s)' ), $theme_updates[ $theme_slug ]->update['new_version'] );
			$theme_version_string_debug .= sprintf( ' (latest version: %s)', $theme_updates[ $theme_slug ]->update['new_version'] );
		}

		if ( $auto_updates_enabled ) {
			if ( isset( $transient->response[ $theme_slug ] ) ) {
				$item = $transient->response[ $theme_slug ];
			} elseif ( isset( $transient->no_update[ $theme_slug ] ) ) {
				$item = $transient->no_update[ $theme_slug ];
			} else {
				$item = array(
					'theme'        => $theme_slug,
					'new_version'  => $theme->version,
					'url'          => '',
					'package'      => '',
					'requires'     => '',
					'requires_php' => '',
				);
			}

			$auto_update_forced = wp_is_auto_update_forced_for_item( 'theme', null, (object) $item );

			if ( ! is_null( $auto_update_forced ) ) {
				$enabled = $auto_update_forced;
			} else {
				$enabled = in_array( $theme_slug, $auto_updates, true );
			}

			if ( $enabled ) {
				$auto_updates_string = __( 'Auto-updates enabled' );
			} else {
				$auto_updates_string = __( 'Auto-updates disabled' );
			}

			/**
			 * Filters the text string of the auto-updates setting for each theme in the Site Health debug data.
			 *
			 * @since 5.5.0
			 *
			 * @param string   $auto_updates_string The string output for the auto-updates column.
			 * @param WP_Theme $theme               An object of theme data.
			 * @param bool     $enabled             Whether auto-updates are enabled for this item.
			 */
			$auto_updates_string = apply_filters( 'theme_auto_update_debug_string', $auto_updates_string, $theme, $enabled );

			$theme_version_string       .= ' | ' . $auto_updates_string;
			$theme_version_string_debug .= ', ' . $auto_updates_string;
		}

		$fields[ sanitize_text_field( $theme->name ) ] = array(
			'label' => sprintf(
				/* translators: 1: Theme name. 2: Theme slug. */
				__( '%1$s (%2$s)' ),
				$theme->name,
				$theme_slug
			),
			'value' => $theme_version_string,
			'debug' => $theme_version_string_debug,
		);
	}

	return array(
		'label'      => __( 'Inactive Themes' ),
		'show_count' => true,
		'fields'     => $fields,
	);
}