Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Theme Logo

Theme Logo is a theme feature, first introduced in Version 4.5. This feature allows themes to add custom logos.

Adding Theme Support

Since Version 4.5, themes should use add_theme_support() in the functions.php file in order to support Theme Logo, like so:

add_theme_support( 'custom-logo' );

Note that you can add custom arguments using:

add_theme_support( 'custom-logo', array(
	'height'      => 100,
	'width'       => 400,
	'flex-height' => true,
	'flex-width'  => true,
	'header-text' => array( 'site-title', 'site-description' ),
) );

Example

Setting up theme logo with custom size:

function theme_prefix_setup() {
	
	add_theme_support( 'custom-logo', array(
		'height'      => 100,
		'width'       => 400,
		'flex-width' => true,
	) );

}
add_action( 'after_setup_theme', 'theme_prefix_setup' );

Output custom logo:

function theme_prefix_the_custom_logo() {
	
	if ( function_exists( 'the_custom_logo' ) ) {
		the_custom_logo();
	}

}

Use function_exists() wrapper to maintain backwards compatibility with older versions of WordPress.

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];

or

$custom_logo_id = get_theme_mod( 'custom_logo' );
$custom_logo_url = wp_get_attachment_image_url( $custom_logo_id , 'full' );
echo '<img src="' . esc_url( $custom_logo_url ) . '" alt="">';

Resources

Related

Theme Support: add_theme_support(), remove_theme_support(), current_theme_supports()
Theme Features: sidebar, menus, post-formats, title-tag, custom-background, custom-header, custom-logo, post-thumbnails, automatic-feed-links, html5, editor-style, content_width