Automattic\WooCommerce\StoreApi\Schemas\V1

CheckoutSchema::generate_additional_fields_schemaprotectedWC 1.0

Generate the schema for additional fields.

Method of the class: CheckoutSchema{}

No Hooks.

Returns

Array.

Usage

// protected - for code of main (parent) or child class
$result = $this->generate_additional_fields_schema( ...$args );
...$args(array[]) (required)
One or more arrays of additional fields.

CheckoutSchema::generate_additional_fields_schema() code WC 9.8.5

protected function generate_additional_fields_schema( ...$args ) {
	$additional_fields = array_merge( ...$args );
	$schema            = [];
	foreach ( $additional_fields as $key => $field ) {
		$field_schema = [
			'description' => $field['label'],
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
			'required'    => $this->additional_fields_controller->is_conditional_field( $field ) ? false : $field['required'],
		];

		if ( 'select' === $field['type'] ) {
			$field_schema['enum'] = array_map(
				function ( $option ) {
					return $option['value'];
				},
				$field['options']
			);
			if ( true !== $field['required'] ) {
				$field_schema['enum'][] = '';
			}
		}

		if ( 'checkbox' === $field['type'] ) {
			$field_schema['type'] = 'boolean';
		}

		if ( 'checkbox' === $field['type'] && true === $field['required'] ) {
			$field_schema['enum'][] = true;
		}

		$schema[ $key ] = $field_schema;
	}
	return $schema;
}