WP_Theme_JSON_Schema::migrate_v2_to_v3()
Migrates from v2 to v3.
- Sets settings.typography.defaultFontSizes to false if settings.typography.fontSizes are defined.
- Sets settings.spacing.defaultSpacingSizes to false if settings.spacing.spacingSizes are defined.
- Prevents settings.spacing.spacingSizes from merging with settings.spacing.spacingScale by unsetting spacingScale when spacingSizes are defined.
Метод класса: WP_Theme_JSON_Schema{}
Хуков нет.
Возвращает
Массив
. Data with defaultFontSizes set to false.
Использование
$result = WP_Theme_JSON_Schema::migrate_v2_to_v3( $old, $origin );
- $old(массив) (обязательный)
- Data to migrate.
- $origin(строка) (обязательный)
- What source of data this object represents. One of 'blocks', 'default', 'theme', or 'custom'.
Список изменений
С версии 6.6.0 | Введена. |
Код WP_Theme_JSON_Schema::migrate_v2_to_v3() WP Theme JSON Schema::migrate v2 to v3 WP 6.6.2
private static function migrate_v2_to_v3( $old, $origin ) { // Copy everything. $new = $old; // Set the new version. $new['version'] = 3; /* * Remaining changes do not need to be applied to the custom origin, * as they should take on the value of the theme origin. */ if ( 'custom' === $origin ) { return $new; } /* * Even though defaultFontSizes and defaultSpacingSizes are new * settings, we need to migrate them as they each control * PRESETS_METADATA prevent_override values which were previously * hardcoded to false. This only needs to happen when the theme provides * fontSizes or spacingSizes as they could match the default ones and * affect the generated CSS. */ if ( isset( $old['settings']['typography']['fontSizes'] ) ) { $new['settings']['typography']['defaultFontSizes'] = false; } /* * Similarly to defaultFontSizes, we need to migrate defaultSpacingSizes * as it controls the PRESETS_METADATA prevent_override which was * previously hardcoded to false. This only needs to happen when the * theme provided spacing sizes via spacingSizes or spacingScale. */ if ( isset( $old['settings']['spacing']['spacingSizes'] ) || isset( $old['settings']['spacing']['spacingScale'] ) ) { $new['settings']['spacing']['defaultSpacingSizes'] = false; } /* * In v3 spacingSizes is merged with the generated spacingScale sizes * instead of completely replacing them. The v3 behavior is what was * documented for the v2 schema, but the code never actually did work * that way. Instead of surprising users with a behavior change two * years after the fact at the same time as a v3 update is introduced, * we'll continue using the "bugged" behavior for v2 themes. And treat * the "bug fix" as a breaking change for v3. */ if ( isset( $old['settings']['spacing']['spacingSizes'] ) ) { unset( $new['settings']['spacing']['spacingScale'] ); } return $new; }