wpseek.com
A WordPress-centric search engine for devs and theme authors



validate_theme_requirements › WordPress Function

Since5.5.0
Deprecatedn/a
validate_theme_requirements ( $stylesheet )
Parameters:
  • (string) $stylesheet Directory name for the theme.
    Required: Yes
Returns:
  • (true|WP_Error) True if requirements are met, WP_Error on failure.
Defined at:
Codex:
Change Log:
  • 5.8.0

Validates the theme requirements for WordPress version and PHP version.

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


Source

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;
}