Docs: Improve DocBlocks in `wp-includes/theme.php` per the documentation standards.

See #49572.
Built from https://develop.svn.wordpress.org/trunk@48189


git-svn-id: http://core.svn.wordpress.org/trunk@47958 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2020-06-27 12:02:03 +00:00
parent 5771b7dff9
commit 5aa7f46a4f
4 changed files with 139 additions and 100 deletions

View File

@ -463,6 +463,7 @@ add_action( 'init', 'wp_sitemaps_get_server' );
* Filters formerly mixed into wp-includes. * Filters formerly mixed into wp-includes.
*/ */
// Theme. // Theme.
add_action( 'setup_theme', 'create_initial_theme_features', 0 );
add_action( 'wp_loaded', '_custom_header_background_just_in_time' ); add_action( 'wp_loaded', '_custom_header_background_just_in_time' );
add_action( 'wp_head', '_custom_logo_header_styles' ); add_action( 'wp_head', '_custom_logo_header_styles' );
add_action( 'plugins_loaded', '_wp_customize_include' ); add_action( 'plugins_loaded', '_wp_customize_include' );
@ -470,7 +471,6 @@ add_action( 'transition_post_status', '_wp_customize_publish_changeset', 10, 3 )
add_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' ); add_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' );
add_action( 'delete_attachment', '_delete_attachment_theme_mod' ); add_action( 'delete_attachment', '_delete_attachment_theme_mod' );
add_action( 'transition_post_status', '_wp_keep_alive_customize_changeset_dependent_auto_drafts', 20, 3 ); add_action( 'transition_post_status', '_wp_keep_alive_customize_changeset_dependent_auto_drafts', 20, 3 );
add_action( 'setup_theme', 'create_initial_theme_features', 0 );
// Calendar widget cache. // Calendar widget cache.
add_action( 'save_post', 'delete_get_calendar_cache' ); add_action( 'save_post', 'delete_get_calendar_cache' );

View File

@ -223,7 +223,7 @@ class WP_REST_Themes_Controller extends WP_REST_Controller {
* *
* @since 5.5.0 * @since 5.5.0
* *
* @param mixed $support The raw value from {@see get_theme_support()} * @param mixed $support The raw value from get_theme_support().
* @param array $args The feature's registration args. * @param array $args The feature's registration args.
* @param string $feature The feature name. * @param string $feature The feature name.
* @param WP_REST_Request $request The request object. * @param WP_REST_Request $request The request object.

View File

@ -19,13 +19,16 @@
* @param array $args { * @param array $args {
* Optional. The search arguments. * Optional. The search arguments.
* *
* @type mixed $errors True to return themes with errors, false to return themes without errors, null to return all themes. * @type mixed $errors True to return themes with errors, false to return
* Defaults to false. * themes without errors, null to return all themes.
* @type mixed $allowed (Multisite) True to return only allowed themes for a site. False to return only disallowed themes for a site. * Default false.
* 'site' to return only site-allowed themes. 'network' to return only network-allowed themes. * @type mixed $allowed (Multisite) True to return only allowed themes for a site.
* Null to return all themes. Defaults to null. * False to return only disallowed themes for a site.
* @type int $blog_id (Multisite) The blog ID used to calculate which themes are allowed. * 'site' to return only site-allowed themes.
* Defaults to 0, synonymous for the current blog. * 'network' to return only network-allowed themes.
* Null to return all themes. Default null.
* @type int $blog_id (Multisite) The blog ID used to calculate which themes
* are allowed. Default 0, synonymous for the current blog.
* } * }
* @return WP_Theme[] Array of WP_Theme objects. * @return WP_Theme[] Array of WP_Theme objects.
*/ */
@ -102,10 +105,12 @@ function wp_get_themes( $args = array() ) {
* *
* @global array $wp_theme_directories * @global array $wp_theme_directories
* *
* @param string $stylesheet Directory name for the theme. Optional. Defaults to current theme. * @param string $stylesheet Optional. Directory name for the theme. Defaults to current theme.
* @param string $theme_root Absolute path of the theme root to look in. Optional. If not specified, get_raw_theme_root() * @param string $theme_root Optional. Absolute path of the theme root to look in.
* is used to calculate the theme root for the $stylesheet provided (or current theme). * If not specified, get_raw_theme_root() is used to calculate
* @return WP_Theme Theme object. Be sure to check the object's exists() method if you need to confirm the theme's existence. * the theme root for the $stylesheet provided (or current theme).
* @return WP_Theme Theme object. Be sure to check the object's exists() method
* if you need to confirm the theme's existence.
*/ */
function wp_get_theme( $stylesheet = '', $theme_root = '' ) { function wp_get_theme( $stylesheet = '', $theme_root = '' ) {
global $wp_theme_directories; global $wp_theme_directories;
@ -130,7 +135,7 @@ function wp_get_theme( $stylesheet = '', $theme_root = '' ) {
* Clears the cache held by get_theme_roots() and WP_Theme. * Clears the cache held by get_theme_roots() and WP_Theme.
* *
* @since 3.5.0 * @since 3.5.0
* @param bool $clear_update_cache Whether to clear the Theme updates cache * @param bool $clear_update_cache Whether to clear the theme updates cache.
*/ */
function wp_clean_themes_cache( $clear_update_cache = true ) { function wp_clean_themes_cache( $clear_update_cache = true ) {
if ( $clear_update_cache ) { if ( $clear_update_cache ) {
@ -147,7 +152,7 @@ function wp_clean_themes_cache( $clear_update_cache = true ) {
* *
* @since 3.0.0 * @since 3.0.0
* *
* @return bool true if a child theme is in use, false otherwise. * @return bool True if a child theme is in use, false otherwise.
*/ */
function is_child_theme() { function is_child_theme() {
return ( TEMPLATEPATH !== STYLESHEETPATH ); return ( TEMPLATEPATH !== STYLESHEETPATH );
@ -156,11 +161,10 @@ function is_child_theme() {
/** /**
* Retrieves name of the current stylesheet. * Retrieves name of the current stylesheet.
* *
* The theme name that the administrator has currently set the front end theme * The theme name that is currently set as the front end theme.
* as.
* *
* For all intents and purposes, the template name and the stylesheet name are * For all intents and purposes, the template name and the stylesheet name
* going to be the same for most cases. * are going to be the same for most cases.
* *
* @since 1.5.0 * @since 1.5.0
* *
@ -360,13 +364,14 @@ function get_template_directory_uri() {
} }
/** /**
* Retrieve theme roots. * Retrieves theme roots.
* *
* @since 2.9.0 * @since 2.9.0
* *
* @global array $wp_theme_directories * @global array $wp_theme_directories
* *
* @return array|string An array of theme roots keyed by template/stylesheet or a single theme root if all themes have the same root. * @return array|string An array of theme roots keyed by template/stylesheet
* or a single theme root if all themes have the same root.
*/ */
function get_theme_roots() { function get_theme_roots() {
global $wp_theme_directories; global $wp_theme_directories;
@ -384,13 +389,14 @@ function get_theme_roots() {
} }
/** /**
* Register a directory that contains themes. * Registers a directory that contains themes.
* *
* @since 2.9.0 * @since 2.9.0
* *
* @global array $wp_theme_directories * @global array $wp_theme_directories
* *
* @param string $directory Either the full filesystem path to a theme folder or a folder within WP_CONTENT_DIR * @param string $directory Either the full filesystem path to a theme folder
* or a folder within WP_CONTENT_DIR.
* @return bool * @return bool
*/ */
function register_theme_directory( $directory ) { function register_theme_directory( $directory ) {
@ -418,14 +424,14 @@ function register_theme_directory( $directory ) {
} }
/** /**
* Search all registered theme directories for complete and valid themes. * Searches all registered theme directories for complete and valid themes.
* *
* @since 2.9.0 * @since 2.9.0
* *
* @global array $wp_theme_directories * @global array $wp_theme_directories
* *
* @param bool $force Optional. Whether to force a new directory scan. Defaults to false. * @param bool $force Optional. Whether to force a new directory scan. Default false.
* @return array|false Valid themes found * @return array|false Valid themes found on success, false on failure.
*/ */
function search_theme_directories( $force = false ) { function search_theme_directories( $force = false ) {
global $wp_theme_directories; global $wp_theme_directories;
@ -463,9 +469,10 @@ function search_theme_directories( $force = false ) {
* @since 3.4.0 * @since 3.4.0
* *
* @param bool $cache_expiration Whether to get the cache of the theme directories. Default false. * @param bool $cache_expiration Whether to get the cache of the theme directories. Default false.
* @param string $cache_directory Directory to be searched for the cache. * @param string $context The class or function name calling the filter.
*/ */
$cache_expiration = apply_filters( 'wp_cache_themes_persistently', false, 'search_theme_directories' ); $cache_expiration = apply_filters( 'wp_cache_themes_persistently', false, 'search_theme_directories' );
if ( $cache_expiration ) { if ( $cache_expiration ) {
$cached_roots = get_site_transient( 'theme_roots' ); $cached_roots = get_site_transient( 'theme_roots' );
if ( is_array( $cached_roots ) ) { if ( is_array( $cached_roots ) ) {
@ -559,7 +566,7 @@ function search_theme_directories( $force = false ) {
} }
/** /**
* Retrieve path to themes directory. * Retrieves path to themes directory.
* *
* Does not have trailing slash. * Does not have trailing slash.
* *
@ -602,7 +609,7 @@ function get_theme_root( $stylesheet_or_template = '' ) {
} }
/** /**
* Retrieve URI for themes directory. * Retrieves URI for themes directory.
* *
* Does not have trailing slash. * Does not have trailing slash.
* *
@ -655,7 +662,7 @@ function get_theme_root_uri( $stylesheet_or_template = '', $theme_root = '' ) {
} }
/** /**
* Get the raw theme root relative to the content directory with no filters applied. * Gets the raw theme root relative to the content directory with no filters applied.
* *
* @since 3.1.0 * @since 3.1.0
* *
@ -695,7 +702,7 @@ function get_raw_theme_root( $stylesheet_or_template, $skip_cache = false ) {
} }
/** /**
* Display localized stylesheet link element. * Displays localized stylesheet link element.
* *
* @since 2.1.0 * @since 2.1.0
*/ */
@ -726,7 +733,7 @@ function locale_stylesheet() {
* @global WP_Customize_Manager $wp_customize * @global WP_Customize_Manager $wp_customize
* @global array $sidebars_widgets * @global array $sidebars_widgets
* *
* @param string $stylesheet Stylesheet name * @param string $stylesheet Stylesheet name.
*/ */
function switch_theme( $stylesheet ) { function switch_theme( $stylesheet ) {
global $wp_theme_directories, $wp_customize, $sidebars_widgets; global $wp_theme_directories, $wp_customize, $sidebars_widgets;
@ -828,8 +835,8 @@ function switch_theme( $stylesheet ) {
* But if it doesn't exist, it'll fall back to the latest core default theme that does exist. * But if it doesn't exist, it'll fall back to the latest core default theme that does exist.
* Will switch theme to the fallback theme if current theme does not validate. * Will switch theme to the fallback theme if current theme does not validate.
* *
* You can use the {@see 'validate_current_theme'} filter to return false to * You can use the {@see 'validate_current_theme'} filter to return false to disable
* disable this functionality. * this functionality.
* *
* @since 1.5.0 * @since 1.5.0
* *
@ -869,6 +876,7 @@ function validate_current_theme() {
/** /**
* If we're in an invalid state but WP_DEFAULT_THEME doesn't exist, * If we're in an invalid state but WP_DEFAULT_THEME doesn't exist,
* switch to the latest core default theme that's installed. * switch to the latest core default theme that's installed.
*
* If it turns out that this latest core default theme is our current * If it turns out that this latest core default theme is our current
* theme, then there's nothing we can do about that, so we have to bail, * theme, then there's nothing we can do about that, so we have to bail,
* rather than going into an infinite loop. (This is why there are * rather than going into an infinite loop. (This is why there are
@ -957,7 +965,7 @@ function validate_theme_requirements( $stylesheet ) {
} }
/** /**
* Retrieve all theme modifications. * Retrieves all theme modifications.
* *
* @since 3.1.0 * @since 3.1.0
* *
@ -981,7 +989,7 @@ function get_theme_mods() {
} }
/** /**
* Retrieve theme modification value for the current theme. * Retrieves theme modification value for the current theme.
* *
* If the modification name does not exist, then the $default will be passed * If the modification name does not exist, then the $default will be passed
* through {@link https://www.php.net/sprintf sprintf()} PHP function with * through {@link https://www.php.net/sprintf sprintf()} PHP function with
@ -1024,7 +1032,7 @@ function get_theme_mod( $name, $default = false ) {
} }
/** /**
* Update theme modification value for the current theme. * Updates theme modification value for the current theme.
* *
* @since 2.1.0 * @since 2.1.0
* *
@ -1054,10 +1062,10 @@ function set_theme_mod( $name, $value ) {
} }
/** /**
* Remove theme modification name from current theme list. * Removes theme modification name from current theme list.
* *
* If removing the name also removes all elements, then the entire option will * If removing the name also removes all elements, then the entire option
* be removed. * will be removed.
* *
* @since 2.1.0 * @since 2.1.0
* *
@ -1081,7 +1089,7 @@ function remove_theme_mod( $name ) {
} }
/** /**
* Remove theme modifications option for current theme. * Removes theme modifications option for current theme.
* *
* @since 2.1.0 * @since 2.1.0
*/ */
@ -1133,7 +1141,7 @@ function display_header_text() {
} }
/** /**
* Check whether a header image is set or not. * Checks whether a header image is set or not.
* *
* @since 4.2.0 * @since 4.2.0
* *
@ -1146,7 +1154,7 @@ function has_header_image() {
} }
/** /**
* Retrieve header image for custom header. * Retrieves header image for custom header.
* *
* @since 2.1.0 * @since 2.1.0
* *
@ -1167,7 +1175,7 @@ function get_header_image() {
} }
/** /**
* Create image tag markup for a custom header image. * Creates image tag markup for a custom header image.
* *
* @since 4.4.0 * @since 4.4.0
* *
@ -1234,7 +1242,7 @@ function get_header_image_tag( $attr = array() ) {
} }
/** /**
* Display the image markup for a custom header image. * Displays the image markup for a custom header image.
* *
* @since 4.4.0 * @since 4.4.0
* *
@ -1245,7 +1253,7 @@ function the_header_image_tag( $attr = array() ) {
} }
/** /**
* Get random header image data from registered images in theme. * Gets random header image data from registered images in theme.
* *
* @since 3.4.0 * @since 3.4.0
* *
@ -1289,11 +1297,11 @@ function _get_random_header_data() {
} }
/** /**
* Get random header image url from registered images in theme. * Gets random header image URL from registered images in theme.
* *
* @since 3.2.0 * @since 3.2.0
* *
* @return string Path to header image * @return string Path to header image.
*/ */
function get_random_header_image() { function get_random_header_image() {
$random_image = _get_random_header_data(); $random_image = _get_random_header_data();
@ -1306,7 +1314,7 @@ function get_random_header_image() {
} }
/** /**
* Check if random header image is in use. * Checks if random header image is in use.
* *
* Always true if user expressly chooses the option in Appearance > Header. * Always true if user expressly chooses the option in Appearance > Header.
* Also true if theme has multiple header images registered, no specific header image * Also true if theme has multiple header images registered, no specific header image
@ -1314,7 +1322,8 @@ function get_random_header_image() {
* *
* @since 3.2.0 * @since 3.2.0
* *
* @param string $type The random pool to use. any|default|uploaded * @param string $type The random pool to use. Possible values include 'any',
* 'default', 'uploaded'. Default 'any'.
* @return bool * @return bool
*/ */
function is_random_header_image( $type = 'any' ) { function is_random_header_image( $type = 'any' ) {
@ -1339,7 +1348,7 @@ function is_random_header_image( $type = 'any' ) {
} }
/** /**
* Display header image URL. * Displays header image URL.
* *
* @since 2.1.0 * @since 2.1.0
*/ */
@ -1352,7 +1361,7 @@ function header_image() {
} }
/** /**
* Get the header images uploaded for the current theme. * Gets the header images uploaded for the current theme.
* *
* @since 3.2.0 * @since 3.2.0
* *
@ -1400,7 +1409,7 @@ function get_uploaded_header_images() {
} }
/** /**
* Get the header image data. * Gets the header image data.
* *
* @since 3.4.0 * @since 3.4.0
* *
@ -1445,7 +1454,7 @@ function get_custom_header() {
} }
/** /**
* Register a selection of default headers to be displayed by the custom header admin UI. * Registers a selection of default headers to be displayed by the custom header admin UI.
* *
* @since 3.0.0 * @since 3.0.0
* *
@ -1461,7 +1470,7 @@ function register_default_headers( $headers ) {
} }
/** /**
* Unregister default headers. * Unregisters default headers.
* *
* This function must be called after register_default_headers() has already added the * This function must be called after register_default_headers() has already added the
* header you want to remove. * header you want to remove.
@ -1488,7 +1497,7 @@ function unregister_default_headers( $header ) {
} }
/** /**
* Check whether a header video is set or not. * Checks whether a header video is set or not.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -1501,7 +1510,7 @@ function has_header_video() {
} }
/** /**
* Retrieve header video URL for custom header. * Retrieves header video URL for custom header.
* *
* Uses a local video if present, or falls back to an external video. * Uses a local video if present, or falls back to an external video.
* *
@ -1536,7 +1545,7 @@ function get_header_video_url() {
} }
/** /**
* Display header video URL. * Displays header video URL.
* *
* @since 4.7.0 * @since 4.7.0
*/ */
@ -1549,7 +1558,7 @@ function the_header_video_url() {
} }
/** /**
* Retrieve header video settings. * Retrieves header video settings.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -1593,7 +1602,7 @@ function get_header_video_settings() {
} }
/** /**
* Check whether a custom header is set or not. * Checks whether a custom header is set or not.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -1628,7 +1637,7 @@ function is_header_video_active() {
} }
/** /**
* Modify whether the custom header video is eligible to show on the current page. * Filters whether the custom header video is eligible to show on the current page.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -1640,7 +1649,7 @@ function is_header_video_active() {
} }
/** /**
* Retrieve the markup for a custom header. * Retrieves the markup for a custom header.
* *
* The container div will always be returned in the Customizer preview. * The container div will always be returned in the Customizer preview.
* *
@ -1660,7 +1669,7 @@ function get_custom_header_markup() {
} }
/** /**
* Print the markup for a custom header. * Prints the markup for a custom header.
* *
* A container div will always be printed in the Customizer preview. * A container div will always be printed in the Customizer preview.
* *
@ -1681,7 +1690,7 @@ function the_custom_header_markup() {
} }
/** /**
* Retrieve background image for custom background. * Retrieves background image for custom background.
* *
* @since 3.0.0 * @since 3.0.0
* *
@ -1692,7 +1701,7 @@ function get_background_image() {
} }
/** /**
* Display background image path. * Displays background image path.
* *
* @since 3.0.0 * @since 3.0.0
*/ */
@ -1701,7 +1710,7 @@ function background_image() {
} }
/** /**
* Retrieve value for custom background color. * Retrieves value for custom background color.
* *
* @since 3.0.0 * @since 3.0.0
* *
@ -1712,7 +1721,7 @@ function get_background_color() {
} }
/** /**
* Display background color value. * Displays background color value.
* *
* @since 3.0.0 * @since 3.0.0
*/ */
@ -1802,7 +1811,7 @@ body.custom-background { <?php echo trim( $style ); ?> }
} }
/** /**
* Render the Custom CSS style element. * Renders the Custom CSS style element.
* *
* @since 4.7.0 * @since 4.7.0
*/ */
@ -1819,7 +1828,7 @@ function wp_custom_css_cb() {
} }
/** /**
* Fetch the `custom_css` post for a given theme. * Fetches the `custom_css` post for a given theme.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -1870,7 +1879,7 @@ function wp_get_custom_css_post( $stylesheet = '' ) {
} }
/** /**
* Fetch the saved Custom CSS content for rendering. * Fetches the saved Custom CSS content for rendering.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -1903,7 +1912,7 @@ function wp_get_custom_css( $stylesheet = '' ) {
} }
/** /**
* Update the `custom_css` post for a given theme. * Updates the `custom_css` post for a given theme.
* *
* Inserts a `custom_css` post when one doesn't yet exist. * Inserts a `custom_css` post when one doesn't yet exist.
* *
@ -2003,7 +2012,7 @@ function wp_update_custom_css_post( $css, $args = array() ) {
} }
/** /**
* Add callback for custom TinyMCE editor stylesheets. * Adds callback for custom TinyMCE editor stylesheets.
* *
* The parameter $stylesheet is the name of the stylesheet, relative to * The parameter $stylesheet is the name of the stylesheet, relative to
* the theme root. It also accepts an array of stylesheets. * the theme root. It also accepts an array of stylesheets.
@ -2061,7 +2070,7 @@ function remove_editor_styles() {
} }
/** /**
* Retrieve any registered editor stylesheet URLs. * Retrieves any registered editor stylesheet URLs.
* *
* @since 4.0.0 * @since 4.0.0
* *
@ -2117,7 +2126,7 @@ function get_editor_stylesheets() {
} }
/** /**
* Expand a theme's starter content configuration using core-provided data. * Expands a theme's starter content configuration using core-provided data.
* *
* @since 4.7.0 * @since 4.7.0
* *
@ -2833,8 +2842,8 @@ function remove_theme_support( $feature ) {
} }
/** /**
* Do not use. Removes theme support internally without knowledge of those not used by * Do not use. Removes theme support internally without knowledge of those not used
* themes directly. * by themes directly.
* *
* @access private * @access private
* @since 3.1.0 * @since 3.1.0
@ -2994,31 +3003,41 @@ function require_if_theme_supports( $feature, $include ) {
} }
/** /**
* Registers a theme feature for use in {@see add_theme_support}. * Registers a theme feature for use in add_theme_support().
* *
* This does not indicate that the current theme supports the feature, it only describes the feature's supported options. * This does not indicate that the current theme supports the feature, it only describes
* the feature's supported options.
* *
* @since 5.5.0 * @since 5.5.0
* *
* @see add_theme_support()
*
* @global $_wp_registered_theme_features * @global $_wp_registered_theme_features
* *
* @param string $feature The name uniquely identifying the feature. * @param string $feature The name uniquely identifying the feature.
* @param array $args { * @param array $args {
* Data used to describe the theme * Data used to describe the theme.
* *
* @type string $type The type of data associated with this feature. Defaults to 'boolean'. * @type string $type The type of data associated with this feature.
* Valid values are 'string', 'boolean', 'integer', 'number', 'array', and 'object'. * Valid values are 'string', 'boolean', 'integer',
* @type boolean $variadic Does this feature utilize the variadic support of {@see add_theme_support()}, * 'number', 'array', and 'object'. Defaults to 'boolean'.
* or are all arguments specified as the second parameter. Must be used with the "array" type. * @type boolean $variadic Does this feature utilize the variadic support
* @type string $description A short description of the feature. Included in the Themes REST API schema. Intended for developers. * of add_theme_support(), or are all arguments specified
* as the second parameter. Must be used with the "array" type.
* @type string $description A short description of the feature. Included in
* the Themes REST API schema. Intended for developers.
* @type bool|array $show_in_rest { * @type bool|array $show_in_rest {
* Whether this feature should be included in the Themes REST API endpoint. Defaults to not being included. * Whether this feature should be included in the Themes REST API endpoint.
* When registering an 'array' or 'object' type, this argument must be an array with the 'schema' key. * Defaults to not being included. When registering an 'array' or 'object' type,
* this argument must be an array with the 'schema' key.
* *
* @type array $schema Specifies the JSON Schema definition describing the feature. If any objects in the schema * @type array $schema Specifies the JSON Schema definition describing
* do not include the 'additionalProperties' keyword, it is set to false. * the feature. If any objects in the schema do not include
* @type string $name An alternate name to be use as the property name in the REST API. * the 'additionalProperties' keyword, it is set to false.
* @type callable $prepare_callback A function used to format the theme support in the REST API. Receives the raw theme support value. * @type string $name An alternate name to be used as the property name
* in the REST API.
* @type callable $prepare_callback A function used to format the theme support in the REST API.
* Receives the raw theme support value.
* } * }
* } * }
* @return true|WP_Error True if the theme feature was successfully registered, a WP_Error object if not. * @return true|WP_Error True if the theme feature was successfully registered, a WP_Error object if not.
@ -3055,30 +3074,48 @@ function register_theme_feature( $feature, $args = array() ) {
} }
if ( ! in_array( $args['type'], array( 'string', 'boolean', 'integer', 'number', 'array', 'object' ), true ) ) { if ( ! in_array( $args['type'], array( 'string', 'boolean', 'integer', 'number', 'array', 'object' ), true ) ) {
return new WP_Error( 'invalid_type', __( 'The feature "type" is not valid JSON Schema type.' ) ); return new WP_Error(
'invalid_type',
__( 'The feature "type" is not valid JSON Schema type.' )
);
} }
if ( true === $args['variadic'] && 'array' !== $args['type'] ) { if ( true === $args['variadic'] && 'array' !== $args['type'] ) {
return new WP_Error( 'variadic_must_be_array', __( 'When registering a "variadic" theme feature, the "type" must be an "array".' ) ); return new WP_Error(
'variadic_must_be_array',
__( 'When registering a "variadic" theme feature, the "type" must be an "array".' )
);
} }
if ( false !== $args['show_in_rest'] && in_array( $args['type'], array( 'array', 'object' ), true ) ) { if ( false !== $args['show_in_rest'] && in_array( $args['type'], array( 'array', 'object' ), true ) ) {
if ( ! is_array( $args['show_in_rest'] ) || empty( $args['show_in_rest']['schema'] ) ) { if ( ! is_array( $args['show_in_rest'] ) || empty( $args['show_in_rest']['schema'] ) ) {
return new WP_Error( 'missing_schema', __( 'When registering an "array" or "object" feature to show in the REST API, the feature\'s schema must also be defined.' ) ); return new WP_Error(
'missing_schema',
__( 'When registering an "array" or "object" feature to show in the REST API, the feature\'s schema must also be defined.' )
);
} }
if ( 'array' === $args['type'] && ! isset( $args['show_in_rest']['schema']['items'] ) ) { if ( 'array' === $args['type'] && ! isset( $args['show_in_rest']['schema']['items'] ) ) {
return new WP_Error( 'missing_schema_items', __( 'When registering an "array" feature, the feature\'s schema must include the "items" keyword.' ) ); return new WP_Error(
'missing_schema_items',
__( 'When registering an "array" feature, the feature\'s schema must include the "items" keyword.' )
);
} }
if ( 'object' === $args['type'] && ! isset( $args['show_in_rest']['schema']['properties'] ) ) { if ( 'object' === $args['type'] && ! isset( $args['show_in_rest']['schema']['properties'] ) ) {
return new WP_Error( 'missing_schema_properties', __( 'When registering an "object" feature, the feature\'s schema must include the "properties" keyword.' ) ); return new WP_Error(
'missing_schema_properties',
__( 'When registering an "object" feature, the feature\'s schema must include the "properties" keyword.' )
);
} }
} }
if ( is_array( $args['show_in_rest'] ) ) { if ( is_array( $args['show_in_rest'] ) ) {
if ( isset( $args['show_in_rest']['prepare_callback'] ) && ! is_callable( $args['show_in_rest']['prepare_callback'] ) ) { if ( isset( $args['show_in_rest']['prepare_callback'] ) && ! is_callable( $args['show_in_rest']['prepare_callback'] ) ) {
return new WP_Error( 'invalid_rest_prepare_callback', __( 'The prepare_callback must be a callable function.' ) ); return new WP_Error(
'invalid_rest_prepare_callback',
__( 'The prepare_callback must be a callable function.' )
);
} }
$args['show_in_rest']['schema'] = wp_parse_args( $args['show_in_rest']['schema'] = wp_parse_args(
@ -3090,7 +3127,9 @@ function register_theme_feature( $feature, $args = array() ) {
) )
); );
if ( is_bool( $args['show_in_rest']['schema']['default'] ) && ! in_array( 'boolean', (array) $args['show_in_rest']['schema']['type'], true ) ) { if ( is_bool( $args['show_in_rest']['schema']['default'] )
&& ! in_array( 'boolean', (array) $args['show_in_rest']['schema']['type'], true )
) {
// Automatically include the "boolean" type when the default value is a boolean. // Automatically include the "boolean" type when the default value is a boolean.
$args['show_in_rest']['schema']['type'] = (array) $args['show_in_rest']['schema']['type']; $args['show_in_rest']['schema']['type'] = (array) $args['show_in_rest']['schema']['type'];
array_unshift( $args['show_in_rest']['schema']['type'], 'boolean' ); array_unshift( $args['show_in_rest']['schema']['type'], 'boolean' );
@ -3522,7 +3561,7 @@ function is_customize_preview() {
} }
/** /**
* Make sure that auto-draft posts get their post_date bumped or status changed to draft to prevent premature garbage-collection. * Makes sure that auto-draft posts get their post_date bumped or status changed to draft to prevent premature garbage-collection.
* *
* When a changeset is updated but remains an auto-draft, ensure the post_date * When a changeset is updated but remains an auto-draft, ensure the post_date
* for the auto-draft posts remains the same so that it will be * for the auto-draft posts remains the same so that it will be

View File

@ -13,7 +13,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '5.5-alpha-48188'; $wp_version = '5.5-alpha-48189';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.