Функция 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 и обеспечат глубокое понимание работы с пользовательскими изображениями.