Forráskód Böngészése

Fixed fonts not being loaded for FSE editor

Jason Crist 3 éve
szülő
commit
7b4c35a786
1 módosított fájl, 40 hozzáadás és 8 törlés
  1. 40 8
      blockbase/inc/fonts/custom-fonts.php

+ 40 - 8
blockbase/inc/fonts/custom-fonts.php

@@ -1,5 +1,10 @@
 <?php
 <?php
 
 
+/**
+ * Get the CSS containing font_face values for a given slug
+ * 
+ * @return string String of CSS
+ */
 function get_style_css( $slug ) {
 function get_style_css( $slug ) {
 	$font_face_file = get_template_directory() . '/assets/fonts/' . $slug . '/font-face.css';
 	$font_face_file = get_template_directory() . '/assets/fonts/' . $slug . '/font-face.css';
 	if( ! file_exists( $font_face_file ) ) {
 	if( ! file_exists( $font_face_file ) ) {
@@ -86,22 +91,19 @@ function extract_font_slug_from_setting( $setting ) {
 }
 }
 
 
 /**
 /**
- * Provide fonts used in global styles settings.
+ * Enqeue all of the fonts used in global styles settings.
  *
  *
  * @return void
  * @return void
  */
  */
 function enqueue_global_styles_fonts() {
 function enqueue_global_styles_fonts() {
+	$fonts;
+	$font_css = '';
 
 
 	if ( is_admin() ) {
 	if ( is_admin() ) {
 		$fonts = collect_fonts_from_blockbase();
 		$fonts = collect_fonts_from_blockbase();
 	} else {
 	} else {
 		$fonts = collect_fonts_from_global_styles();
 		$fonts = collect_fonts_from_global_styles();
 	}
 	}
-	enqueue_font_styles( $fonts );
-}
-
-function enqueue_font_styles( $fonts ) {
-	$font_css = '';
 
 
 	foreach ( $fonts as $font ) {
 	foreach ( $fonts as $font ) {
 		$font_css .= get_style_css($font);
 		$font_css .= get_style_css($font);
@@ -118,11 +120,41 @@ function enqueue_font_styles( $fonts ) {
 
 
 	// Add the styles to the stylesheet.
 	// Add the styles to the stylesheet.
 	wp_add_inline_style( 'blockbase_font_faces', $font_css );
 	wp_add_inline_style( 'blockbase_font_faces', $font_css );
+
 }
 }
 
 
+/**
+ * Enqueue all of the fonts provided by Blockbase for FSE use
+ */
+function enqueue_fse_font_styles( $fonts ) {
+	$fonts = collect_fonts_from_blockbase();
+	$font_css = '';
+
+	foreach ( $fonts as $font ) {
+		$font_css .= get_style_css($font);
+	}
+
+	wp_enqueue_style( 'wp-block-library' );
+	wp_add_inline_style( 'wp-block-library', $font_css );
+}
+
+/**
+ * Build a list of all font slugs provided by theme from theme.json
+ * 
+ * @return array Collection of all font slugs defined in the theme.json file
+ */
 function collect_fonts_from_blockbase() {
 function collect_fonts_from_blockbase() {
-	return ['arvo', 'cabin'];
+	$font_family_slugs = Array();
+	$global_styles = wp_get_global_styles();
+	$data = WP_Theme_JSON_Resolver::get_merged_data()->get_raw_data();
+	$font_families = $data['settings']['typography']['fontFamilies']['theme'];
+
+	foreach( $font_families as $font_family ) {
+		$font_family_slugs[] = $font_family['slug'];
+	}
+
+	return $font_family_slugs;
 }
 }
 
 
 add_action( 'init', 'enqueue_global_styles_fonts' );
 add_action( 'init', 'enqueue_global_styles_fonts' );
-add_action( 'admin_init', 'enqueue_editor_global_styles_fonts' );
+add_action( 'admin_init', 'enqueue_fse_font_styles' );