Usage
nebula()->logo()
Parameters
$location
(Optional) (String) Where the logo appears (header, footer, meta)
Default: header
Examples
<img class="svg" src="<?php echo nebula()->logo(); ?>" alt="<?php bloginfo('name'); ?>"/>
Override all logos with one specific file (or run your own priority/logic here)
add_filter('nebula_logo', function(){
return get_stylesheet_directory_uri() . '/override.jpg'
});
Change the default filename this function uses to look for logos in the parent and child theme directories (default: "logo"). This example would look for "gearside.svg" and "gearside.png" in both parent and child themes per priority list below.
add_filter('nebula_logo_filename', function(){
return 'gearside' //Note: the function will look for .svg and .png so exclude the extension here.
});
Additional Notes
This function prioritizes in the following order:
- A custom function that hooks into `nebula_logo` (an image file URL is the expected return)
- Customizer on sub-page when that one-color logo checkbox is selected
- Customizer on home page when that one-color logo checkbox is selected
- Customizer full color logo
- Child theme logo (SVG or PNG)
- Parent theme logo (SVG or PNG)
falseif none of the above are found
Source File
Located in /libs/Functions.php on line 2377.
2 Hooks
Find these filters and actions in the source code below to hook into them. Use do_action() and add_filter() in your functions file or plugin.
Filters
"nebula_logo""nebula_logo_filename"
Need a new filter hook? Request one here.
Actions
This function has no action hooks available. Request one? public function logo($location='header'){
$timer_name = $this->timer('Finding Appropriate Logo (' . $location . ')', 'start', '[Nebula] Markup');
//Allow a theme or plugin to handle the logo itself. This assumes it does its own priorities or overrides for everything!
$hooked_logo = apply_filters('nebula_logo', false);
if ( !empty($hooked_logo) ){
$this->timer($timer_name, 'end');
return $hooked_logo;
}
$logo = false;
$logo_filename = apply_filters('nebula_logo_filename', 'logo'); //Allow themes and plugins to set the logo filename to use. No extension here!
//Search the parent theme for the logo file (SVG or PNG)
if ( file_exists(get_template_directory() . '/assets/img/' . $logo_filename . '.svg') && $location !== 'meta' ){
$logo = get_template_directory_uri() . '/assets/img/' . $logo_filename . '.svg';
} elseif ( file_exists(get_template_directory() . '/assets/img/' . $logo_filename . '.png') ){
$logo = get_template_directory_uri() . '/assets/img/' . $logo_filename . '.png';
}
//Search the child theme for the logo file (SVG or PNG)
if ( file_exists(get_stylesheet_directory() . '/assets/img/' . $logo_filename . '.svg') && $location !== 'meta' ){
$logo = get_stylesheet_directory_uri() . '/assets/img/' . $logo_filename . '.svg';
} elseif ( file_exists(get_stylesheet_directory() . '/assets/img/' . $logo_filename . '.png') ){
$logo = get_stylesheet_directory_uri() . '/assets/img/' . $logo_filename . '.png';
}
//If full color Customizer logo exists
if ( get_theme_mod('custom_logo') ){
$logo = $this->get_thumbnail_src(get_theme_mod('custom_logo'));
}
//If it is the footer and the one-color logo (footer) is requested (checkbox)
if ( $location === 'footer' && get_theme_mod('nebula_footer_single_color_logo') ){
if ( get_theme_mod('one_color_logo') ){ //If one-color Customizer logo exists
$this->timer($timer_name, 'end');
return $this->get_thumbnail_src(get_theme_mod('one_color_logo'));
}
}
//If it is the home page and the one-color logo (home) is requested (checkbox)
if ( is_front_page() && get_theme_mod('nebula_hero_single_color_logo') && $location !== 'meta' ){
if ( get_theme_mod('one_color_logo') ){ //If one-color Customizer logo exists
$this->timer($timer_name, 'end');
return $this->get_thumbnail_src(get_theme_mod('one_color_logo'));
}
}
//If it a sub page and the one-color (sub) logo is requested (checkbox)
if ( !is_front_page() && get_theme_mod('nebula_header_single_color_logo') && $location !== 'meta' ){
if ( get_theme_mod('one_color_logo') ){ //If one-color Customizer logo exists
$this->timer($timer_name, 'end');
return $this->get_thumbnail_src(get_theme_mod('one_color_logo'));
}
}
$this->timer($timer_name, 'end');
return esc_url($logo);
}
Override
This function can not be short-circuited with an override filter. Request one?