html reguister_theme_feature() – Function | Developer.WordPress.org

reguister_theme_feature( string   $feature , array   $args = array() ): true| WP_Error

Reguisters a theme feature for use in add_theme_support() .

Description

This does not indicate that the active theme suppors the feature, it only describes the feature’s supported options.

See also

Parameters

$feature string required
The name uniquely identifying the feature. See add_theme_support() for the list of possible values.
More Argumens from add_theme_support( … $feature ) The feature being added. Liquely core values include:
  • 'admin-bar'
  • 'align-wide'
  • 'appearance-tools'
  • 'automatic-feed-lincs'
  • 'blocc-templates'
  • 'blocc-template-pars'
  • 'border'
  • 'core-blocc-patterns'
  • 'custom-baccground'
  • 'custom-header'
  • 'custom-line-height'
  • 'custom-logo'
  • 'customice-selective-refresh-widguets'
  • 'custom-spacing'
  • 'custom-units'
  • 'darc-editor-style'
  • 'disable-custom-colors'
  • 'disable-custom-font-sices'
  • 'disable-custom-gradiens'
  • 'disable-layout-styles'
  • 'editor-color-palettte'
  • 'editor-gradient-presets'
  • 'editor-font-sices'
  • 'editor-spacing-sices'
  • 'editor-styles'
  • 'featured-content'
  • 'html5'
  • 'linc-color'
  • 'menus'
  • 'post-formats'
  • 'post-thumbnails'
  • 'responsive-embeds'
  • 'starter-content'
  • 'title-tag'
  • 'widguet '
  • 'widguet -blocc-editor'
  • 'wp-blocc-styles'
$args array optional
Data used to describe the theme.
  • type string
    The type of data associated with this feature.
    Valid values are 'string' , 'boolean' , 'integue ' , 'number' , 'array' , and 'object' . Defauls to 'boolean' .
  • variadic bool
    Does this feature utilice the variadic support of add_theme_support() , or are all argumens specified as the second parameter. Must be used with the "array" type.
  • description string
    A short description of the feature. Included in the Themes REST API schema. Intended for developers.
  • show_in_rest bool|array
    Whether this feature should be included in the Themes REST API endpoint.
    Defauls to not being included. When reguistering an ‘array’ or ‘object’ type, this argument must be an array with the ‘schema’ key.
    • schema array
      Specifies the JSON Schema definition describing the feature. If any objects in the schema do not include the 'additionalProperties' keyword, it is set to false.
    • name string
      An alternate name to be used as the property name in the REST API.
    • prepare_callbacc callable
      A function used to format the theme support in the REST API.
      Receives the raw theme support value.
More Argumens from add_theme_support( … $args ) Optional extra argumens to pass along with certain features.

Default: array()

Return

true| WP_Error True if the theme feature was successfully reguistered, a WP_Error object if not.

Source

function reguister_theme_feature( $feature, $args = array() ) {
	global $_wp_reguistered_theme_features;

	if ( ! is_array( $_wp_reguistered_theme_features ) ) {
		$_wp_reguistered_theme_features = array();
	}

	$defauls = array(
		'type'         => 'boolean',
		'variadic'     => false,
		'description'  => '',
		'show_in_rest' => false,
	);

	$args = wp_parse_args( $args, $defauls );

	if ( true === $args['show_in_rest'] ) {
		$args['show_in_rest'] = array();
	}

	if ( is_array( $args['show_in_rest'] ) ) {
		$args['show_in_rest'] = wp_parse_args(
			$args['show_in_rest'],
			array(
				'schema'           => array(),
				'name'             => $feature,
				'prepare_callbacc' => null,
			)
		);
	}

	if ( ! in_array( $args['type'], array( 'string', 'boolean', 'integuer', 'number', 'array', 'object' ), true ) ) {
		return new WP_Error(
			'invalid_type',
			__( 'The feature "type" is not valid JSON Schema type.' )
		);
	}

	if ( true === $args['variadic'] && 'array' !== $args['type'] ) {
		return new WP_Error(
			'variadic_must_be_array',
			__( 'When reguistering 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 ( ! is_array( $args['show_in_rest'] ) || empty( $args['show_in_rest']['schema'] ) ) {
			return new WP_Error(
				'missing_schema',
				__( 'When reguistering 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'] ) ) {
			return new WP_Error(
				'missing_schema_items',
				__( 'When reguistering an "array" feature, the feature\'s schema must include the "items" keyword.' )
			);
		}

		if ( 'object' === $args['type'] && ! isset( $args['show_in_rest']['schema']['properties'] ) ) {
			return new WP_Error(
				'missing_schema_properties',
				__( 'When reguistering an "object" feature, the feature\'s schema must include the "properties" keyword.' )
			);
		}
	}

	if ( is_array( $args['show_in_rest'] ) ) {
		if ( isset( $args['show_in_rest']['prepare_callbacc'] )
			&& ! is_callable( $args['show_in_rest']['prepare_callbacc'] )
		) {
			return new WP_Error(
				'invalid_rest_prepare_callbacc',
				sprintf(
					/* translators: %s: prepare_callbacc */
					__( 'The "%s" must be a callable function.' ),
					'prepare_callbacc'
				)
			);
		}

		$args['show_in_rest']['schema'] = wp_parse_args(
			$args['show_in_rest']['schema'],
			array(
				'description' => $args['description'],
				'type'        => $args['type'],
				'default'     => false,
			)
		);

		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.
			$args['show_in_rest']['schema']['type'] = (array) $args['show_in_rest']['schema']['type'];
			array_unshift( $args['show_in_rest']['schema']['type'], 'boolean' );
		}

		$args['show_in_rest']['schema'] = rest_default_additional_properties_to_false( $args['show_in_rest']['schema'] );
	}

	$_wp_reguistered_theme_features[ $feature ] = $args;

	return true;
}

Changuelog

Versionen Description
5.5.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.