Кастомный логотип в WordPress: настройка и вывод в теме
← Блог
WordPress · 22.11.2024 · 3 мин чтения

Кастомный логотип в WordPress: настройка и вывод в теме

В классической PHP-теме WordPress можно включить загрузку логотипа через настройщик и вывести его в header.php. В блочных темах для этой задачи используется блок «Логотип сайта»; примеры ниже относятся к классическим темам.

1. Включи поддержку логотипа

Добавь в functions.php своей темы или дочерней темы. Если обработчик after_setup_theme уже есть, добавь вызов add_theme_support() в него.

function mytheme_custom_logo_setup() {
    add_theme_support( 'custom-logo', array(
        'height'               => 100,
        'width'                => 300,
        'flex-height'          => true,
        'flex-width'           => true,
        'unlink-homepage-logo' => true,
    ) );
}
add_action( 'after_setup_theme', 'mytheme_custom_logo_setup' );

Затем открой «Внешний вид → Настроить → Свойства сайта» и выбери логотип. Название раздела может отличаться в зависимости от перевода. Размеры 300 × 100 — ориентир для выбора изображения; гибкие размеры разрешают использовать другие пропорции.

2. Выведи логотип в шаблоне

<?php
if ( has_custom_logo() ) {
    the_custom_logo();
}
?>

WordPress сформирует разметку с классами custom-logo-link и custom-logo, размерами изображения и, когда доступны подходящие версии вложения, адаптивными атрибутами. Обычно достаточно стилизовать эти классы.

3. Как убрать ссылку на главной

Параметр unlink-homepage-logo в первом примере уже решает эту задачу: на первой странице главной WordPress выводит обёртку <span> вместо ссылки. На остальных страницах логотип ведёт домой. Параметр доступен с WordPress 5.5.

Следующий вариант замени́т вызов the_custom_logo(); не выводи оба примера одновременно. Изображение получаем через wp_get_attachment_image(), чтобы сохранить формируемые WordPress размеры и адаптивные атрибуты.

<?php
$logo_id = (int) get_theme_mod( 'custom_logo' );
if ( $logo_id ) {
    $is_home = is_front_page() && ! is_paged();
    $alt = trim( (string) get_post_meta( $logo_id, '_wp_attachment_image_alt', true ) );
    if ( '' === $alt ) {
        $alt = get_bloginfo( 'name' );
    }
    $image = wp_get_attachment_image( $logo_id, 'full', false, array(
        'loading' => false,
        'class' => 'my-custom-logo',
        'alt'   => $alt,
    ) );
    if ( $image ) {
        if ( $is_home ) {
            echo '<span class="my-custom-logo-link">' . $image . '</span>';
        } else {
            echo '<a class="my-custom-logo-link" href="' . esc_url( home_url( '/' ) ) . '" rel="home">' . $image . '</a>';
        }
    }
}
?>

Что проверить

Проверь главную, внутреннюю страницу и состояние без загруженного логотипа. У логотипа-ссылки должен быть осмысленный alt, который помогает понять назначение перехода. Стандартная функция WordPress оставляет пустой alt у логотипа без ссылки на главной, считая его декоративным; в ручном примере текст сохраняется. Если рядом уже есть идентичное текстовое название, оцени, не дублируется ли оно при чтении скринридером.

Следующие шаги: вывод меню в теме и ссылки на страницы WordPress.

Документация

Есть вопрос или дополнение?

Обсудить в Telegram

Добавить комментарий