Функция get_custom_logo() в WordPress
Функция get_custom_logo() предназначена для получения пользовательского логотипа, связанного с домашней страницей вашего сайта на WordPress. 
Как это работает?
Эта функция использует другие функции WordPress, такие как wp_get_attachment_image() и get_theme_mod(). 
Используемые функции
wp_get_attachment_image(): получает изображение по его идентификатору.get_theme_mod(): позволяет получить настройки вашей темы, в нашем случае — идентификатор логотипа.
Заменяемые хуки
get_custom_logo_image_attributes: фильтр для атрибутов изображения логотипа.get_custom_logo: фильтр для HTML-кода логотипа.
Возвращаемое значение
Функция возвращает строку, содержащую HTML-код для отображения логотипа.
Применение
Чтобы использовать функцию, просто вызовите её, передав ID блога (по умолчанию используется текущий блог).
get_custom_logo( $blog_id );
Параметры
- $blog_id (int): ID блога, для которого вы хотите получить логотип.
- По умолчанию: ID текущего блога.
 
 
Примеры использования
Пример 1: Получение логотипа сайта
Предположим, что вы включили функцию логотипа в вашей теме и указали изображение. Тогда вызовите:
echo get_custom_logo();
Это выведет HTML-код, похожий на следующий (в одной строке):
    
Пример 2: Проверка наличия логотипа
Вы можете проверить, установлен ли логотип на сайте:
$logo = get_custom_logo();
if( $logo ) {
    echo 'У нас есть логотип';
}
Пример 3: Получение только URL логотипа
Если вам нужен только URL изображения логотипа, вы можете сделать так:
$custom_logo_id = get_theme_mod( 'custom_logo' );
$image = wp_get_attachment_image_src( $custom_logo_id, 'full' );
// Выводим его:
echo $image[0];
Также, есть альтернативный способ получить ссылку на логотип:
echo esc_url( wp_get_attachment_url( get_theme_mod( 'custom_logo' ) ) );
Изменения в функции
- С версии 4.5.0: функция была введена.
 - С версии 5.5.0: добавлена опция удалить ссылку на домашнюю страницу для логотипа.
 - С версии 5.5.1: отложенная загрузка изображений отключена по умолчанию.
 
Код функции get_custom_logo()
Вот как выглядит реализация функции get_custom_logo():
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;
}
if ( has_custom_logo() ) {
    $custom_logo_id = get_theme_mod( 'custom_logo' );
    $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() ) {
        $custom_logo_attr['alt'] = '';
    } else {
        $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' );
        }
    }
    $custom_logo_attr = apply_filters( 'get_custom_logo_image_attributes', $custom_logo_attr, $custom_logo_id, $blog_id );
    $image = wp_get_attachment_image( $custom_logo_id, 'full', false, $custom_logo_attr );
    if ( $image ) {
        if ( $unlink_homepage_logo && is_front_page() && ! is_paged() ) {
            $html = sprintf('%1$s', $image);
        } else {
            $aria_current = is_front_page() && ! is_paged() ? ' aria-current="page"' : '';
            $html = sprintf('%3$s', esc_url(home_url('/')), $aria_current, $image);
        }
    }
} elseif ( is_customize_preview() ) {
    $html = sprintf('', esc_url(home_url('/')));
}
if ( $switched_blog ) {
    restore_current_blog();
}
return apply_filters( 'get_custom_logo', $html, $blog_id );
}
Связанные функции
has_custom_logo(): проверяет, установлен ли логотип.the_custom_logo(): выводит логотип на экран.
Эти функции помогут вам во взаимодействии с логотипами в ваших темах WordPress и обеспечат глубокое понимание работы с пользовательскими изображениями.