Automattic\WooCommerce\Internal\Admin\Settings
SettingsUISchema::transform_legacy_field
Transform a legacy field into the canonical schema.
Метод класса: SettingsUISchema{}
Хуков нет.
Возвращает
Массив|null.
Использование
$result = SettingsUISchema::transform_legacy_field( $setting, $default_save_adapter, ?string $visibility_controller ): ?array;
- $setting(массив) (обязательный)
- Legacy field definition.
- $default_save_adapter(строка) (обязательный)
- Default save adapter.
- ?string $visibility_controller
- .
По умолчанию:null
Код SettingsUISchema::transform_legacy_field() SettingsUISchema::transform legacy field WC 10.9.1
private static function transform_legacy_field( array $setting, string $default_save_adapter, ?string $visibility_controller = null ): ?array {
$id = isset( $setting['id'] ) && is_scalar( $setting['id'] ) ? (string) $setting['id'] : '';
$type = isset( $setting['type'] ) && is_string( $setting['type'] ) ? $setting['type'] : 'text';
if ( '' === $id ) {
return null;
}
$canonical_type = self::normalize_type( $type );
$field = array(
'id' => $id,
'label' => self::get_field_label( $setting, $id, $type ),
'type' => $canonical_type,
'description' => self::get_field_description( $setting, $type ),
'value' => self::get_field_value( $setting, $canonical_type ),
'save' => self::get_save_schema( $setting, $default_save_adapter ),
);
foreach ( array( 'component', 'placeholder', 'disabled' ) as $key ) {
if ( array_key_exists( $key, $setting ) ) {
$field[ $key ] = $setting[ $key ];
}
}
if ( isset( $setting['custom_attributes'] ) && is_array( $setting['custom_attributes'] ) ) {
$field['customAttributes'] = self::get_custom_attributes( $setting['custom_attributes'] );
}
$visibility = self::get_field_visibility( $setting, $visibility_controller );
if ( $visibility ) {
$field['visibility'] = $visibility;
}
$options = self::get_options( $setting );
if ( ! empty( $options ) ) {
$field['options'] = $options;
}
if ( 'info' === $type && '' === $field['description'] && isset( $setting['text'] ) && is_scalar( $setting['text'] ) ) {
$field['description'] = wp_kses_post( (string) $setting['text'] );
$field['save'] = array( 'adapter' => 'none' );
}
return $field;
}