create_initial_theme_features

The timeline below displays how wordpress function create_initial_theme_features has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Creates the initial theme features when the 'setup_theme' action is fired.
 *
 * See {@see 'setup_theme'}.
 *
 * @since 5.5.0
 * @since 6.0.1 The `block-templates` feature was added.
 */
function create_initial_theme_features()
{
    register_theme_feature('align-wide', array('description' => __('Whether theme opts in to wide alignment CSS class.'), 'show_in_rest' => true));
    register_theme_feature('automatic-feed-links', array('description' => __('Whether posts and comments RSS feed links are added to head.'), 'show_in_rest' => true));
    register_theme_feature('block-templates', array('description' => __('Whether a theme uses block-based templates.'), 'show_in_rest' => true));
    register_theme_feature('block-template-parts', array('description' => __('Whether a theme uses block-based template parts.'), 'show_in_rest' => true));
    register_theme_feature('custom-background', array('description' => __('Custom background if defined by the theme.'), 'type' => 'object', 'show_in_rest' => array('schema' => array('properties' => array('default-image' => array('type' => 'string', 'format' => 'uri'), 'default-preset' => array('type' => 'string', 'enum' => array('default', 'fill', 'fit', 'repeat', 'custom')), 'default-position-x' => array('type' => 'string', 'enum' => array('left', 'center', 'right')), 'default-position-y' => array('type' => 'string', 'enum' => array('left', 'center', 'right')), 'default-size' => array('type' => 'string', 'enum' => array('auto', 'contain', 'cover')), 'default-repeat' => array('type' => 'string', 'enum' => array('repeat-x', 'repeat-y', 'repeat', 'no-repeat')), 'default-attachment' => array('type' => 'string', 'enum' => array('scroll', 'fixed')), 'default-color' => array('type' => 'string'))))));
    register_theme_feature('custom-header', array('description' => __('Custom header if defined by the theme.'), 'type' => 'object', 'show_in_rest' => array('schema' => array('properties' => array('default-image' => array('type' => 'string', 'format' => 'uri'), 'random-default' => array('type' => 'boolean'), 'width' => array('type' => 'integer'), 'height' => array('type' => 'integer'), 'flex-height' => array('type' => 'boolean'), 'flex-width' => array('type' => 'boolean'), 'default-text-color' => array('type' => 'string'), 'header-text' => array('type' => 'boolean'), 'uploads' => array('type' => 'boolean'), 'video' => array('type' => 'boolean'))))));
    register_theme_feature('custom-logo', array('type' => 'object', 'description' => __('Custom logo if defined by the theme.'), 'show_in_rest' => array('schema' => array('properties' => array('width' => array('type' => 'integer'), 'height' => array('type' => 'integer'), 'flex-width' => array('type' => 'boolean'), 'flex-height' => array('type' => 'boolean'), 'header-text' => array('type' => 'array', 'items' => array('type' => 'string')), 'unlink-homepage-logo' => array('type' => 'boolean'))))));
    register_theme_feature('customize-selective-refresh-widgets', array('description' => __('Whether the theme enables Selective Refresh for Widgets being managed with the Customizer.'), 'show_in_rest' => true));
    register_theme_feature('dark-editor-style', array('description' => __('Whether theme opts in to the dark editor style UI.'), 'show_in_rest' => true));
    register_theme_feature('disable-custom-colors', array('description' => __('Whether the theme disables custom colors.'), 'show_in_rest' => true));
    register_theme_feature('disable-custom-font-sizes', array('description' => __('Whether the theme disables custom font sizes.'), 'show_in_rest' => true));
    register_theme_feature('disable-custom-gradients', array('description' => __('Whether the theme disables custom gradients.'), 'show_in_rest' => true));
    register_theme_feature('disable-layout-styles', array('description' => __('Whether the theme disables generated layout styles.'), 'show_in_rest' => true));
    register_theme_feature('editor-color-palette', array('type' => 'array', 'description' => __('Custom color palette if defined by the theme.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'object', 'properties' => array('name' => array('type' => 'string'), 'slug' => array('type' => 'string'), 'color' => array('type' => 'string')))))));
    register_theme_feature('editor-font-sizes', array('type' => 'array', 'description' => __('Custom font sizes if defined by the theme.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'object', 'properties' => array('name' => array('type' => 'string'), 'size' => array('type' => 'number'), 'slug' => array('type' => 'string')))))));
    register_theme_feature('editor-gradient-presets', array('type' => 'array', 'description' => __('Custom gradient presets if defined by the theme.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'object', 'properties' => array('name' => array('type' => 'string'), 'gradient' => array('type' => 'string'), 'slug' => array('type' => 'string')))))));
    register_theme_feature('editor-styles', array('description' => __('Whether theme opts in to the editor styles CSS wrapper.'), 'show_in_rest' => true));
    register_theme_feature('html5', array('type' => 'array', 'description' => __('Allows use of HTML5 markup for search forms, comment forms, comment lists, gallery, and caption.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'string', 'enum' => array('search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style'))))));
    register_theme_feature('post-formats', array('type' => 'array', 'description' => __('Post formats supported.'), 'show_in_rest' => array('name' => 'formats', 'schema' => array('items' => array('type' => 'string', 'enum' => get_post_format_slugs()), 'default' => array('standard')), 'prepare_callback' => static function ($formats) {
        $formats = is_array($formats) ? array_values($formats[0]) : array();
        $formats = array_merge(array('standard'), $formats);
        return $formats;
    })));
    register_theme_feature('post-thumbnails', array('type' => 'array', 'description' => __('The post types that support thumbnails or true if all post types are supported.'), 'show_in_rest' => array('type' => array('boolean', 'array'), 'schema' => array('items' => array('type' => 'string')))));
    register_theme_feature('responsive-embeds', array('description' => __('Whether the theme supports responsive embedded content.'), 'show_in_rest' => true));
    register_theme_feature('title-tag', array('description' => __('Whether the theme can manage the document title tag.'), 'show_in_rest' => true));
    register_theme_feature('wp-block-styles', array('description' => __('Whether theme opts in to default WordPress block styles for viewing.'), 'show_in_rest' => true));
}

WordPress Version: 5.5

/**
 * Creates the initial theme features when the 'setup_theme' action is fired.
 *
 * See {@see 'setup_theme'}.
 *
 * @since 5.5.0
 */
function create_initial_theme_features()
{
    register_theme_feature('align-wide', array('description' => __('Whether theme opts in to wide alignment CSS class.'), 'show_in_rest' => true));
    register_theme_feature('automatic-feed-links', array('description' => __('Whether posts and comments RSS feed links are added to head.'), 'show_in_rest' => true));
    register_theme_feature('custom-background', array('description' => __('Custom background if defined by the theme.'), 'type' => 'object', 'show_in_rest' => array('schema' => array('properties' => array('default-image' => array('type' => 'string', 'format' => 'uri'), 'default-preset' => array('type' => 'string', 'enum' => array('default', 'fill', 'fit', 'repeat', 'custom')), 'default-position-x' => array('type' => 'string', 'enum' => array('left', 'center', 'right')), 'default-position-y' => array('type' => 'string', 'enum' => array('left', 'center', 'right')), 'default-size' => array('type' => 'string', 'enum' => array('auto', 'contain', 'cover')), 'default-repeat' => array('type' => 'string', 'enum' => array('repeat-x', 'repeat-y', 'repeat', 'no-repeat')), 'default-attachment' => array('type' => 'string', 'enum' => array('scroll', 'fixed')), 'default-color' => array('type' => 'string'))))));
    register_theme_feature('custom-header', array('description' => __('Custom header if defined by the theme.'), 'type' => 'object', 'show_in_rest' => array('schema' => array('properties' => array('default-image' => array('type' => 'string', 'format' => 'uri'), 'random-default' => array('type' => 'boolean'), 'width' => array('type' => 'integer'), 'height' => array('type' => 'integer'), 'flex-height' => array('type' => 'boolean'), 'flex-width' => array('type' => 'boolean'), 'default-text-color' => array('type' => 'string'), 'header-text' => array('type' => 'boolean'), 'uploads' => array('type' => 'boolean'), 'video' => array('type' => 'boolean'))))));
    register_theme_feature('custom-logo', array('type' => 'object', 'description' => __('Custom logo if defined by the theme.'), 'show_in_rest' => array('schema' => array('properties' => array('width' => array('type' => 'integer'), 'height' => array('type' => 'integer'), 'flex-width' => array('type' => 'boolean'), 'flex-height' => array('type' => 'boolean'), 'header-text' => array('type' => 'array', 'items' => array('type' => 'string')), 'unlink-homepage-logo' => array('type' => 'boolean'))))));
    register_theme_feature('customize-selective-refresh-widgets', array('description' => __('Whether the theme enables Selective Refresh for Widgets being managed with the Customizer.'), 'show_in_rest' => true));
    register_theme_feature('dark-editor-style', array('description' => __('Whether theme opts in to the dark editor style UI.'), 'show_in_rest' => true));
    register_theme_feature('disable-custom-colors', array('description' => __('Whether the theme disables custom colors.'), 'show_in_rest' => true));
    register_theme_feature('disable-custom-font-sizes', array('description' => __('Whether the theme disables custom font sizes.'), 'show_in_rest' => true));
    register_theme_feature('disable-custom-gradients', array('description' => __('Whether the theme disables custom gradients.'), 'show_in_rest' => true));
    register_theme_feature('editor-color-palette', array('type' => 'array', 'description' => __('Custom color palette if defined by the theme.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'object', 'properties' => array('name' => array('type' => 'string'), 'slug' => array('type' => 'string'), 'color' => array('type' => 'string')))))));
    register_theme_feature('editor-font-sizes', array('type' => 'array', 'description' => __('Custom font sizes if defined by the theme.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'object', 'properties' => array('name' => array('type' => 'string'), 'size' => array('type' => 'number'), 'slug' => array('type' => 'string')))))));
    register_theme_feature('editor-gradient-presets', array('type' => 'array', 'description' => __('Custom gradient presets if defined by the theme.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'object', 'properties' => array('name' => array('type' => 'string'), 'gradient' => array('type' => 'string'), 'slug' => array('type' => 'string')))))));
    register_theme_feature('editor-styles', array('description' => __('Whether theme opts in to the editor styles CSS wrapper.'), 'show_in_rest' => true));
    register_theme_feature('html5', array('type' => 'array', 'description' => __('Allows use of HTML5 markup for search forms, comment forms, comment lists, gallery, and caption.'), 'show_in_rest' => array('schema' => array('items' => array('type' => 'string', 'enum' => array('search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style'))))));
    register_theme_feature('post-formats', array('type' => 'array', 'description' => __('Post formats supported.'), 'show_in_rest' => array('name' => 'formats', 'schema' => array('items' => array('type' => 'string', 'enum' => get_post_format_slugs()), 'default' => array('standard')), 'prepare_callback' => static function ($formats) {
        $formats = is_array($formats) ? array_values($formats[0]) : array();
        $formats = array_merge(array('standard'), $formats);
        return $formats;
    })));
    register_theme_feature('post-thumbnails', array('type' => 'array', 'description' => __('The post types that support thumbnails or true if all post types are supported.'), 'show_in_rest' => array('type' => array('boolean', 'array'), 'schema' => array('items' => array('type' => 'string')))));
    register_theme_feature('responsive-embeds', array('description' => __('Whether the theme supports responsive embedded content.'), 'show_in_rest' => true));
    register_theme_feature('title-tag', array('description' => __('Whether the theme can manage the document title tag.'), 'show_in_rest' => true));
    register_theme_feature('wp-block-styles', array('description' => __('Whether theme opts in to default WordPress block styles for viewing.'), 'show_in_rest' => true));
}