diff --git a/assets/boilerplate/theme.json b/assets/boilerplate/theme.json index 6e725d7b..c6f949b1 100644 --- a/assets/boilerplate/theme.json +++ b/assets/boilerplate/theme.json @@ -10,35 +10,12 @@ "units": [ "%", "px", "em", "rem", "vh", "vw" ] }, "typography": { - "defaultFontSizes": false, "fontFamilies": [ { "fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif", "name": "System Font", "slug": "system-font" } - ], - "fontSizes": [ - { - "name": "Small", - "size": "13px", - "slug": "small" - }, - { - "name": "Medium", - "size": "20px", - "slug": "medium" - }, - { - "name": "Large", - "size": "36px", - "slug": "large" - }, - { - "name": "X-Large", - "size": "42px", - "slug": "x-large" - } ] }, "useRootPaddingAwareAlignments": true diff --git a/includes/create-theme/resolver_additions.php b/includes/create-theme/resolver_additions.php index 0c684739..4ce11778 100644 --- a/includes/create-theme/resolver_additions.php +++ b/includes/create-theme/resolver_additions.php @@ -79,6 +79,10 @@ public static function export_theme_data( $content, $extra_theme_data = null ) { $data = $theme->get_data(); + // move Font size preset settings from 'default' to 'theme' to ensure + // any changes made via Global Styles are saved back to the theme + $data = static::font_size_preset_changes( $data ); + // Add the schema. if ( empty( $schema ) ) { global $wp_version; @@ -106,6 +110,25 @@ public static function get_user_data() { : parent::get_user_data(); } + /** + * This checks if the fontSizes has been set and saved to the database. + * If it has then the $data variable is changed and will later be used to save back the theme. + * A method is used from the parent class if it exists to get any user changed settings. + * + * @param array $data + * @return array $data + */ + public static function font_size_preset_changes( $data ) { + $user_data = parent::get_user_data(); + if ( method_exists( $user_data, 'get_settings' ) ) { + $user_data = $user_data->get_settings(); + if ( isset( $user_data['typography']['fontSizes'] ) && ! empty( $user_data['typography']['fontSizes'] ) ) { + $data['settings']['typography']['defaultFontSizes'] = false; + $data['settings']['typography']['fontSizes'] = $user_data['typography']['fontSizes']['default']; + } + } + return $data; + } /** * Stringify the array data. *