function get_custom_logo( $blog_id = 0 ) {
$html = '';
$ switched_blog = false;
if ( is_multisite() && ! empty( $blog_id ) && get_current_blog_id() !== (int) $blog_id ) {
switch_to_blog($blog_id);
$ switched_blog = true;
}
$custom_logo_id = get_theme_mod( 'custom_logo');
// We have a logo. Logo є go.
if ( $custom_logo_id ) {
$custom_logo_attr = array(
'class' => 'custom-logo',
'loading' => false,
);
$unlink_homepage_logo = (bool) get_theme_support( 'custom-logo', 'unlink-homepage-logo');
if ( $unlink_homepage_logo && is_front_page() && ! is_paged() ) {
/*
* Якщо на домашній сторінці, натиснути на logo alt atribut to empty string,
* as the image is decorative and doesn't need its purpose to be described.
*/
$custom_logo_attr['alt'] = '';
} else {
/*
* Якщо logo attribute is empty, get the site title and explicitly pass it
* to the attributes used by wp_get_attachment_image().
*/
$image_alt = get_post_meta( $custom_logo_id, '_wp_attachment_image_alt', true );
if ( empty( $image_alt ) ) {
$custom_logo_attr['alt'] = get_bloginfo( 'name', 'display' );
}
}
/**
* Filters List of custom logo image attributes.
*
* @ Since 5.5.0
*
* @param array $custom_logo_attr Custom logo image attributes.
* @param int $custom_logo_id Custom logo attachment ID.
* @param int $blog_id ID blog для отримання custom logo for.
*/
$custom_logo_attr = apply_filters( 'get_custom_logo_image_attributes', $custom_logo_attr, $custom_logo_id, $blog_id);
/*
* Якщо alt attribute is not empty, there's no need to explicitly pass it
* because wp_get_attachment_image() already adds the alt attribute.
*/
$image = wp_get_attachment_image( $custom_logo_id, 'full', false, $custom_logo_attr );
if ( $unlink_homepage_logo && is_front_page() && ! is_paged() ) {
// Якщо на домашній сторінці, не з'єднати логотип до home.
$html = sprintf(
'<span class="custom-logo-link">%1$s</span>',
$image
);
} else {
$aria_current = is_front_page() && ! is_paged()? ' aria-current="page"' : '';
$html = sprintf(
'<a href="%1$s" class="custom-logo-link" rel="home"%2$s>%3$s</a>',
esc_url( home_url( '/' ) ),
$aria_current,
$image
);
}
} elseif ( is_customize_preview() ) {
// If no logo is set but we're in the Customizer, leave a placeholder (необхідний для live preview).
$html = sprintf(
'<a href="%1$s" class="custom-logo-link" style="display:none;"><img class="custom-logo" alt="" /></a>',
esc_url( home_url( '/' ) )
);
}
if ( $switched_blog ) {
restore_current_blog();
}
/**
* Filters the custom logo output.
*
* @ Since 4.5.0
* @since 4.6.0 Added `$blog_id` parameter.
*
* @param string $html Custom logo HTML output.
* @param int $blog_id ID blog для отримання custom logo for.
*/
return apply_filters( 'get_custom_logo', $html, $blog_id);
}