Archived topic
List of fonts used by theme
10 replies · Started by Eroan on March 12, 2021
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! :)