+/**
+ * Determines whether the site has a custom logo.
+ *
+ * @since 4.5.0
+ *
+ * @param int $blog_id Optional. ID of the blog in question. Default is the ID of the current blog.
+ * @return bool Whether the site has a custom logo or not.
+ */
+function has_custom_logo( $blog_id = 0 ) {
+ if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) {
+ switch_to_blog( $blog_id );
+ }
+
+ $custom_logo_id = get_theme_mod( 'custom_logo' );
+
+ if ( is_multisite() && ms_is_switched() ) {
+ restore_current_blog();
+ }
+
+ return (bool) $custom_logo_id;
+}
+
+/**
+ * Returns a custom logo, linked to home.
+ *
+ * @since 4.5.0
+ *
+ * @param int $blog_id Optional. ID of the blog in question. Default is the ID of the current blog.
+ * @return string Custom logo markup.
+ */
+function get_custom_logo( $blog_id = 0 ) {
+ $html = '';
+
+ if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) {
+ switch_to_blog( $blog_id );
+ }
+
+ $custom_logo_id = get_theme_mod( 'custom_logo' );
+
+ // We have a logo. Logo is go.
+ if ( $custom_logo_id ) {
+ $html = sprintf( '<a href="%1$s" class="custom-logo-link" rel="home" itemprop="url">%2$s</a>',
+ esc_url( home_url( '/' ) ),
+ wp_get_attachment_image( $custom_logo_id, 'full', false, array(
+ 'class' => 'custom-logo',
+ 'itemprop' => 'logo',
+ ) )
+ );
+ }
+
+ // If no logo is set but we're in the Customizer, leave a placeholder (needed for the live preview).
+ elseif ( is_customize_preview() ) {
+ $html = sprintf( '<a href="%1$s" class="custom-logo-link" style="display:none;"><img class="custom-logo"/></a>',
+ esc_url( home_url( '/' ) )
+ );
+ }
+
+ if ( is_multisite() && ms_is_switched() ) {
+ restore_current_blog();
+ }
+
+ /**
+ * Filter the custom logo output.
+ *
+ * @since 4.5.0
+ *
+ * @param string $html Custom logo HTML output.
+ */
+ return apply_filters( 'get_custom_logo', $html );
+}
+
+/**
+ * Displays a custom logo, linked to home.
+ *
+ * @since 4.5.0
+ *
+ * @param int $blog_id Optional. ID of the blog in question. Default is the ID of the current blog.
+ */
+function the_custom_logo( $blog_id = 0 ) {
+ echo get_custom_logo( $blog_id );
+}
+