Title: WP_REST_Font_Families_Controller::validate_font_family_settings
Published: April 3, 2024
Last modified: August 20, 2026

---

# WP_REST_Font_Families_Controller::validate_font_family_settings( string $value, WP_REST_Request $request ): true|󠀁[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)󠁿

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#wp--skip-link--target)

Validates settings when creating or updating a font family.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#parameters)󠁿

 `$value`stringrequired

Encoded JSON string of font family settings.

`$request`[WP_REST_Request](https://developer.wordpress.org/reference/classes/wp_rest_request/)
required

Request object.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#return)󠁿

 true|[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/) True
if the settings are valid, otherwise a [WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)
object.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#source)󠁿

    ```php
    public function validate_font_family_settings( $value, $request ) {
    	// Enforce JSON Schema validity for field before applying custom validation logic.
    	$args     = $this->get_endpoint_args_for_item_schema( $request->get_method() );
    	$validity = rest_validate_value_from_schema( $value, $args['font_family_settings'], 'font_family_settings' );

    	if ( is_wp_error( $validity ) ) {
    		return $validity;
    	}

    	$settings = json_decode( $value, true );

    	// Check settings string is valid JSON.
    	if ( null === $settings ) {
    		return new WP_Error(
    			'rest_invalid_param',
    			/* translators: %s: Parameter name: "font_family_settings". */
    			sprintf( __( '%s parameter must be a valid JSON string.' ), 'font_family_settings' ),
    			array( 'status' => 400 )
    		);
    	}

    	$schema   = $this->get_item_schema()['properties']['font_family_settings'];
    	$required = $schema['required'];

    	if ( isset( $request['id'] ) ) {
    		// Allow sending individual properties if we are updating an existing font family.
    		unset( $schema['required'] );

    		// But don't allow updating the slug, since it is used as a unique identifier.
    		if ( isset( $settings['slug'] ) ) {
    			return new WP_Error(
    				'rest_invalid_param',
    				/* translators: %s: Name of parameter being updated: font_family_settings[slug]". */
    				sprintf( __( '%s cannot be updated.' ), 'font_family_settings[slug]' ),
    				array( 'status' => 400 )
    			);
    		}
    	}

    	// Check that the font face settings match the theme.json schema.
    	$has_valid_settings = rest_validate_value_from_schema( $settings, $schema, 'font_family_settings' );

    	if ( is_wp_error( $has_valid_settings ) ) {
    		$has_valid_settings->add_data( array( 'status' => 400 ) );
    		return $has_valid_settings;
    	}

    	// Check that none of the required settings are empty values.
    	foreach ( $required as $key ) {
    		if ( isset( $settings[ $key ] ) && ! $settings[ $key ] ) {
    			return new WP_Error(
    				'rest_invalid_param',
    				/* translators: %s: Name of the empty font family setting parameter, e.g. "font_family_settings[slug]". */
    				sprintf( __( '%s cannot be empty.' ), "font_family_settings[ $key ]" ),
    				array( 'status' => 400 )
    			);
    		}
    	}

    	return true;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/rest-api/endpoints/class-wp-rest-font-families-controller.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/rest-api/endpoints/class-wp-rest-font-families-controller.php#L89)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/rest-api/endpoints/class-wp-rest-font-families-controller.php#L89-L149)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_REST_Font_Families_Controller::get_endpoint_args_for_item_schema()](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/get_endpoint_args_for_item_schema/)`wp-includes/rest-api/endpoints/class-wp-rest-font-families-controller.php` |

Get the arguments used when creating or updating a font family.

  | 
| [WP_REST_Font_Families_Controller::get_item_schema()](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/get_item_schema/)`wp-includes/rest-api/endpoints/class-wp-rest-font-families-controller.php` |

Retrieves the post’s schema, conforming to JSON Schema.

  | 
| [rest_validate_value_from_schema()](https://developer.wordpress.org/reference/functions/rest_validate_value_from_schema/)`wp-includes/rest-api.php` |

Validate a value based on a schema.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [is_wp_error()](https://developer.wordpress.org/reference/functions/is_wp_error/)`wp-includes/load.php` |

Checks whether the given variable is a WordPress Error.

  | 
| [WP_Error::__construct()](https://developer.wordpress.org/reference/classes/wp_error/__construct/)`wp-includes/class-wp-error.php` |

Initializes the error.

  |

[Show 3 more](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_rest_font_families_controller/validate_font_family_settings/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.5.0](https://developer.wordpress.org/reference/since/6.5.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_rest_font_families_controller%2Fvalidate_font_family_settings%2F)
before being able to contribute a note or feedback.