В классической 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.
4. Если нужна собственная разметка
Следующий вариант замени́т вызов 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.