$generate_settings[ $setting ], 'variants' => $variants, 'category' => $category ? $category : 'sans-serif', ); } if ( function_exists( 'generate_secondary_nav_get_defaults' ) ) { $secondary_nav_settings = wp_parse_args( get_option( 'generate_secondary_nav_settings', array() ), generate_secondary_nav_get_defaults() ); $secondary_nav_id = strtolower( str_replace( ' ', '_', $secondary_nav_settings[ 'font_secondary_navigation' ] ) ); if ( ! array_key_exists( $secondary_nav_id, $select_fonts ) && ! in_array( $secondary_nav_settings[ 'font_secondary_navigation' ], generate_typography_default_fonts() ) ) { $variants = get_theme_mod( 'font_secondary_navigation_variants', array() ); $category = get_theme_mod( 'font_secondary_navigation_category' ); if ( ! empty( $variants ) && ! is_array( $variants ) ) { $variants = explode( ',', $variants ); } if ( ! $variants ) { if ( ! $all_fonts ) { $all_fonts = generate_get_all_google_fonts(); } if ( array_key_exists( $secondary_nav_id, $all_fonts ) ) { $variants = $all_fonts[ $secondary_nav_id ]['variants']; } } if ( ! $category ) { if ( ! $all_fonts ) { $all_fonts = generate_get_all_google_fonts(); } if ( array_key_exists( $secondary_nav_id, $all_fonts ) ) { $category = $all_fonts[ $secondary_nav_id ]['category']; } } $fonts[ $secondary_nav_id ] = array( 'name' => $secondary_nav_settings[ 'font_secondary_navigation' ], 'variants' => $variants, 'category' => $category ? $category : 'sans-serif', ); } } return $fonts; } } if ( ! function_exists( 'generate_typography_set_font_data' ) ) { add_action( 'admin_init', 'generate_typography_set_font_data' ); /** * This function will check to see if your category and variants are saved * If not, it will set them for you, and won't run again * * @since 1.2.90 */ function generate_typography_set_font_data() { // Bail if we don't have our defaults if ( ! function_exists( 'generate_get_default_fonts' ) ) { return; } // Get our defaults $defaults = generate_get_default_fonts(); // Get our settings $generate_settings = wp_parse_args( get_option( 'generate_settings', array() ), generate_get_default_fonts() ); // We need to loop through these settings $font_settings = array( 'font_body', 'font_site_title', 'font_site_tagline', 'font_navigation', 'font_widget_title', 'font_heading_1', 'font_heading_2', 'font_heading_3' ); // Add secondary navigation to the array last if it exists if ( function_exists( 'generate_secondary_nav_get_defaults' ) ) { $font_settings[ 'font_secondary_navigation' ] = 'font_secondary_navigation'; } // Start looping foreach( $font_settings as $setting ) { // Change our variables for the secondary navigation - this will run last if ( function_exists( 'generate_secondary_nav_get_defaults' ) && 'font_secondary_navigation' == $setting ) { $generate_settings = wp_parse_args( get_option( 'generate_secondary_nav_settings', array() ), generate_secondary_nav_get_defaults() ); $defaults = generate_secondary_nav_get_defaults(); } // We don't need to do this if we're using the default font, as these values have defaults already if ( $defaults[ $setting ] == $generate_settings[ $setting ] ) { continue; } // Don't need to continue if we're using a system font or our default font if ( in_array( $generate_settings[ $setting ], generate_typography_default_fonts() ) || 'Open Sans' == $generate_settings[ $setting ] ) { continue; } // Don't continue if our category and variants are already set if ( get_theme_mod( $setting . '_category' ) && get_theme_mod( $setting . '_variants' ) ) { continue; } // Get all of our fonts $fonts = generate_get_all_google_fonts(); // Get the ID from our font $id = strtolower( str_replace( ' ', '_', $generate_settings[ $setting ] ) ); // If the ID doesn't exist within our fonts, we can bail if ( ! array_key_exists( $id, $fonts ) ) { continue; } // Let's grab our category to go with our font $category = ! empty( $fonts[$id]['category'] ) ? $fonts[$id]['category'] : ''; // Grab all of the variants associated with our font $variants = $fonts[$id]['variants']; // Loop through our variants and put them into an array, then turn them into a comma separated list $output = array(); if ( $variants ) { foreach ( $variants as $variant ) { $output[] = $variant; } $variants = implode( ',', $output ); } // Set our theme mods with our new settings if ( '' !== $category ) { set_theme_mod( $setting . '_category', $category ); } if ( '' !== $variants ) { set_theme_mod( $setting . '_variants', $variants ); } } } }