Site logo

Archived topic

List of fonts used by theme

10 replies · Started by Eroan on March 12, 2021

Viewing posts 1–11 of 11

Hi there,

I added local fonts in my child theme as explained here : https://docs.generatepress.com/article/adding-local-fonts/

It works great.

But I would like to know if they are active or not, for body and other parts.

What is the best way to get a php array() of fonts used by GeneratePress ?

Something like $fonts_array = generate_get_option( 'fonts' ); would be nice ;)

Thanks.

Hi there,

do you want to be able to see the list of fonts your site is loading ? As GP only loads fonts that are selected in the customizer - i can always take a look at the site to tell you which fonts are there. Let me know.

Hi,

I need to know in my child theme's functions.php if the custom fonts I defined are used or not in order to conditionally load stylesheets.

even something like the following would be ok I guess :

$used_fonts = array(
generate_get_option( ‘fonts_body’ ),
generate_get_option( ‘fonts_h1’ ),
generate_get_option( ‘fonts_h2’ ),
generate_get_option( ‘fonts_other...’ )
);

Thanks.

Hi there,

You have the right idea there. The option names are:

font_body
font_top_bar
font_site_title
font_site_tagline
font_navigation
font_buttons
font_heading_1
font_heading_2
font_heading_3
font_heading_4
font_heading_5
font_heading_6
font_footer

Thanks for your answer.

That way I will be able to check if a font is used with php function in_array().

Hi,

I wrote this :

function generatepress_child_active_fonts()
{
    $used_fonts = array(
      generate_get_option('font_body'),
      generate_get_option('font_top_bar'),
      generate_get_option('font_site_title'),
      generate_get_option('font_site_tagline'),
      generate_get_option('font_navigation'),
      generate_get_option('font_buttons'),
      generate_get_option('font_heading_1'),
      generate_get_option('font_heading_2'),
      generate_get_option('font_heading_3'),
      generate_get_option('font_heading_4'),
      generate_get_option('font_heading_5'),
      generate_get_option('font_heading_6'),
      generate_get_option('font_footer')
    );
    return array_unique($used_fonts);
}

When I do a var_dump() on generatepress_child_active_fonts() I get :

array(13) {
  [0]=>
  NULL
  [1]=>
  NULL
  [2]=>
  NULL
  [3]=>
  NULL
  [4]=>
  NULL
  [5]=>
  NULL
  [6]=>
  NULL
  [7]=>
  NULL
  [8]=>
  NULL
  [9]=>
  NULL
  [10]=>
  NULL
  [11]=>
  NULL
  [12]=>
  NULL
}

Any idea why ?

Thanks.

I got it thanks, I must use :

generate_get_font_family_css('font_body', 'generate_settings', generate_get_default_fonts());

Hum, it works but gives me fonts used in "".

function generatepress_child_active_fonts()
{
    $used_fonts = array(
      generate_get_font_family_css('font_body', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_top_bar', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_site_title', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_site_tagline', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_navigation', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_buttons', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_heading_1', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_heading_2', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_heading_3', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_heading_4', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_heading_5', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_heading_6', 'generate_settings', generate_get_default_fonts()),
      generate_get_font_family_css('font_footer', 'generate_settings', generate_get_default_fonts())
    );
    return array_unique($used_fonts);
}

Which made me end with :

function generatepress_child_active_fonts()
{
    $used_fonts = array(
      trim(generate_get_font_family_css('font_body', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_top_bar', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_site_title', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_site_tagline', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_navigation', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_buttons', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_heading_1', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_heading_2', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_heading_3', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_heading_4', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_heading_5', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_heading_6', 'generate_settings', generate_get_default_fonts()), '"'),
      trim(generate_get_font_family_css('font_footer', 'generate_settings', generate_get_default_fonts()), '"')
    );
    return array_unique($used_fonts);
}

Which made me end with :

function generatepress_child_active_fonts()
{
    $font_settings = array(
    'font_body',
    'font_top_bar',
    'font_site_title',
    'font_site_tagline',
    'font_navigation',
    'font_widget_title',
    'font_buttons',
    'font_heading_1',
    'font_heading_2',
    'font_heading_3',
    'font_heading_4',
    'font_heading_5',
    'font_heading_6',
    'font_footer',
  );

    $used_fonts = array();

    foreach ($font_settings as $font_setting) {
        $used_fonts[] = trim(generate_get_font_family_css($font_setting, 'generate_settings', generate_get_default_fonts()), '"');
    }

    return array_unique($used_fonts);
}

Is there a simpler way ?

Thanks.

Yes, instead of this:

$used_fonts = array(
    generate_get_option('font_body'),
    ...

Do this:

$settings = wp_parse_args(
    get_option( 'generate_settings', array() ),
    generate_get_default_fonts()
);

$used_fonts = array(
    $settings['font_body'],
    ...

Which made me end with :

function generatepress_child_active_fonts()
{
    $settings = wp_parse_args(
        get_option('generate_settings', array()),
        generate_get_default_fonts()
    );

    $used_fonts = array(
      $settings['font_body'],
      $settings['font_top_bar'],
      $settings['font_site_title'],
      $settings['font_site_tagline'],
      $settings['font_navigation'],
      $settings['font_widget_title'],
      $settings['font_buttons'],
      $settings['font_heading_1'],
      $settings['font_heading_2'],
      $settings['font_heading_3'],
      $settings['font_heading_4'],
      $settings['font_heading_5'],
      $settings['font_heading_6'],
      $settings['font_footer']
    );

    return array_unique($used_fonts);
}

Simpler and faster, exactly what I was looking for.

Thanks ;)

Glad I could help! :)

This archived topic is closed to new replies.