validate_theme_requirements( string $stylesheet )

Validates the theme requirements for WordPress version and PHP version.

Description

Uses the information from Requires at least and Requires PHP headers defined in the theme’s style.css file.

Parameters

$stylesheet

(string) (Required) Directory name for the theme.

Return

(true|WP_Error) True if requirements are met, WP_Error on failure.

Source

File: wp-includes/theme.php

function validate_theme_requirements( $stylesheet ) {
	$theme = wp_get_theme( $stylesheet );

	// If the theme is a Full Site Editing theme, check for the presence of the Gutenberg plugin.
	$theme_tags = $theme->get( 'Tags' );

	if ( ! empty( $theme_tags ) && in_array( 'full-site-editing', $theme_tags, true ) && ! function_exists( 'gutenberg_is_fse_theme' ) ) {
		return new WP_Error(
			'theme_requires_gutenberg_plugin',
			sprintf(
					/* translators: %s: Theme name. */
				_x( '<strong>Error:</strong> This theme (%s) uses Full Site Editing, which requires the Gutenberg plugin to be activated.', 'theme' ),
				$theme->display( 'Name' )
			)
		);
	}

	$requirements = array(
		'requires'     => ! empty( $theme->get( 'RequiresWP' ) ) ? $theme->get( 'RequiresWP' ) : '',
		'requires_php' => ! empty( $theme->get( 'RequiresPHP' ) ) ? $theme->get( 'RequiresPHP' ) : '',
	);

	$compatible_wp  = is_wp_version_compatible( $requirements['requires'] );
	$compatible_php = is_php_version_compatible( $requirements['requires_php'] );

	if ( ! $compatible_wp && ! $compatible_php ) {
		return new WP_Error(
			'theme_wp_php_incompatible',
			sprintf(
				/* translators: %s: Theme name. */
				_x( '<strong>Error:</strong> Current WordPress and PHP versions do not meet minimum requirements for %s.', 'theme' ),
				$theme->display( 'Name' )
			)
		);
	} elseif ( ! $compatible_php ) {
		return new WP_Error(
			'theme_php_incompatible',
			sprintf(
				/* translators: %s: Theme name. */
				_x( '<strong>Error:</strong> Current PHP version does not meet minimum requirements for %s.', 'theme' ),
				$theme->display( 'Name' )
			)
		);
	} elseif ( ! $compatible_wp ) {
		return new WP_Error(
			'theme_wp_incompatible',
			sprintf(
				/* translators: %s: Theme name. */
				_x( '<strong>Error:</strong> Current WordPress version does not meet minimum requirements for %s.', 'theme' ),
				$theme->display( 'Name' )
			)
		);
	}

	return true;
}

Changelog

Version Description
5.8.0 Removed support for using readme.txt as a fallback.
5.5.0 Introduced.

© 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/validate_theme_requirements