diff -r 34716fd837a4 -r be944660c56a wp/wp-includes/theme.php --- a/wp/wp-includes/theme.php Tue Dec 15 15:52:01 2020 +0100 +++ b/wp/wp-includes/theme.php Wed Sep 21 18:19:35 2022 +0200 @@ -899,10 +899,8 @@ * Uses the information from `Requires at least` and `Requires PHP` headers * defined in the theme's `style.css` file. * - * If the headers are not present in the theme's stylesheet file, - * `readme.txt` is also checked as a fallback. - * * @since 5.5.0 + * @since 5.8.0 Removed support for using `readme.txt` as a fallback. * * @param string $stylesheet Directory name for the theme. * @return true|WP_Error True if requirements are met, WP_Error on failure. @@ -910,26 +908,25 @@ 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( 'Error: 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' ) : '', ); - $readme_file = $theme->theme_root . '/' . $stylesheet . '/readme.txt'; - - if ( file_exists( $readme_file ) ) { - $readme_headers = get_file_data( - $readme_file, - array( - 'requires' => 'Requires at least', - 'requires_php' => 'Requires PHP', - ), - 'theme' - ); - - $requirements = array_merge( $readme_headers, $requirements ); - } - $compatible_wp = is_wp_version_compatible( $requirements['requires'] ); $compatible_php = is_php_version_compatible( $requirements['requires_php'] ); @@ -1024,6 +1021,8 @@ if ( is_string( $default ) ) { // Only run the replacement if an sprintf() string format pattern was found. if ( preg_match( '#(?get( 'Name' ); } + delete_option( 'mods_' . $theme_name ); } @@ -2147,7 +2152,7 @@ 'text', array( 'title' => _x( 'Find Us', 'Theme starter content' ), - 'text' => join( + 'text' => implode( '', array( '' . _x( 'Address', 'Theme starter content' ) . "\n", @@ -2473,17 +2478,43 @@ * by adding it to the function signature. * @since 5.5.0 The `core-block-patterns` feature was added and is enabled by default. * @since 5.5.0 The `custom-logo` feature now also accepts 'unlink-homepage-logo'. + * @since 5.6.0 The `post-formats` feature warns if no array is passed. + * @since 5.8.0 The `widgets-block-editor` feature enables the Widgets block editor. * * @global array $_wp_theme_features * - * @param string $feature The feature being added. Likely core values include 'post-formats', 'post-thumbnails', - * 'custom-header', 'custom-background', 'custom-logo', 'menus', 'automatic-feed-links', - * 'html5', 'title-tag', 'customize-selective-refresh-widgets', 'starter-content', - * 'responsive-embeds', 'align-wide', 'dark-editor-style', 'disable-custom-colors', - * 'disable-custom-font-sizes', 'editor-color-palette', 'editor-font-sizes', - * 'editor-styles', 'wp-block-styles', and 'core-block-patterns'. + * @param string $feature The feature being added. Likely core values include: + * - 'admin-bar' + * - 'align-wide' + * - 'automatic-feed-links' + * - 'core-block-patterns' + * - 'custom-background' + * - 'custom-header' + * - 'custom-line-height' + * - 'custom-logo' + * - 'customize-selective-refresh-widgets' + * - 'custom-spacing' + * - 'custom-units' + * - 'dark-editor-style' + * - 'disable-custom-colors' + * - 'disable-custom-font-sizes' + * - 'editor-color-palette' + * - 'editor-gradient-presets' + * - 'editor-font-sizes' + * - 'editor-styles' + * - 'featured-content' + * - 'html5' + * - 'menus' + * - 'post-formats' + * - 'post-thumbnails' + * - 'responsive-embeds' + * - 'starter-content' + * - 'title-tag' + * - 'wp-block-styles' + * - 'widgets' + * - 'widgets-block-editor' * @param mixed ...$args Optional extra arguments to pass along with certain features. - * @return void|bool False on failure, void otherwise. + * @return void|false Void on success, false on failure. */ function add_theme_support( $feature, ...$args ) { global $_wp_theme_features; @@ -2515,6 +2546,9 @@ unset( $post_formats['standard'] ); $args[0] = array_intersect( $args[0], array_keys( $post_formats ) ); + } else { + _doing_it_wrong( "add_theme_support( 'post-formats' )", __( 'You need to pass an array of post formats.' ), '5.6.0' ); + return false; } break;