The has_custom_logo() WordPress PHP function determines whether the site has a custom logo.
Usage
To check if a site has a custom logo:
if (has_custom_logo()) {
// Site has a custom logo
} else {
// Site doesn't have a custom logo
}
Parameters
$blog_id(int, optional) – ID of the blog in question. Default is the ID of the current blog.
More information
See WordPress Developer Resources: has_custom_logo
Related functions: the_custom_logo(), get_custom_logo()
To get the URL of the custom logo image:
$custom_logo_id = get_theme_mod('custom_logo');
$image = wp_get_attachment_image_src($custom_logo_id, 'full');
echo $image[0];
Examples
Display custom logo or site title
If the site has a custom logo, display it; otherwise, display the site title.
if (has_custom_logo()) {
the_custom_logo();
} else {
bloginfo('name');
}
Add a class to custom logo
Add a custom CSS class to the custom logo.
if (has_custom_logo()) {
$custom_logo_id = get_theme_mod('custom_logo');
$logo = wp_get_attachment_image_src($custom_logo_id, 'full');
echo '<img src="' . esc_url($logo[0]) . '" class="custom-logo-class" alt="' . get_bloginfo('name') . '">';
}
Display custom logo with fallback image
Display the custom logo if available, otherwise use a fallback image.
if (has_custom_logo()) {
the_custom_logo();
} else {
echo '<img src="' . esc_url(get_template_directory_uri() . '/images/fallback-logo.png') . '" alt="' . get_bloginfo('name') . '">';
}
Display custom logo only on the homepage
Display the custom logo only on the homepage.
if (is_front_page() && has_custom_logo()) {
the_custom_logo();
}
Display custom logo with a link to the homepage
Display the custom logo wrapped in a link to the homepage.
if (has_custom_logo()) {
$custom_logo_id = get_theme_mod('custom_logo');
$logo = wp_get_attachment_image_src($custom_logo_id, 'full');
echo '<a href="' . esc_url(home_url('/')) . '"><img src="' . esc_url($logo[0]) . '" alt="' . get_bloginfo('name') . '"></a>';
}