Добавить изображение перед заголовком записи

Вопрос или проблема

Этот код добавляет изображение перед всеми заголовками на странице.

Как мне добавить одно единственное изображение перед заголовком записи?

function adt_abovetitle($title){

    //Возвращает новый заголовок, если вызван внутри цикла
    if ( in_the_loop() ) {

    $x = do_shortcode('[shortcode id="'. $id . '"]');
        return  $x . $title;    

    } else {
    //Иначе возвращает обычный   
    return $title;
    }
}

add_filter( 'the_title', 'adt_abovetitle');

Это работает отлично, когда я тестирую. Я исправил ваш код, так как у вас была небольшая ошибка в несовпадении имени функции.

Также вы можете добавить условный тег и обернуть шорткод в div, но в остальном всё работает.

function adt_abovetitle($title){

    //Возвращает новый заголовок, если вызван внутри цикла
     if ( in_the_loop() && is_singular('post') ) {

    $x = do_shortcode('[shortcode id="'. $id . '"]');
        return  $x . $title;    

    } else {
    //Иначе возвращает обычный   
    return $title;
    }
}

add_filter( 'the_title', 'adt_abovetitle');

Вам также стоит протестировать ваше else-условие.

Функции in_the_loop() и is_singular() слишком тяжелые и замедляют загрузку страницы. Вам просто нужно отредактировать файл single.php в корневой папке вашей темы.
Код будет выглядеть так:

if (has_post_thumbnail()) {
    the_post_thumbnail('full');
}
<h1 class="entry-title"><?php the_title(); ?></h1>

Ответ или решение

К сожалению, вы не сможете добавить изображение перед заголовком записи, используя только фильтр the_title, так как он применяется ко всем заголовкам на странице и не предоставляет возможности точно настроить его под конкретную запись. Вместо этого более оптимальным решением будет редактирование файла single.php вашей темы, что позволит вам контролировать отображение заголовка и изображений.

Вот пошаговый процесс, как это сделать:

  1. Откройте файл single.php: Это файл, который отвечает за отображение одиночных записей в вашей теме. Вы можете найти его в корневом каталоге вашей темы.

  2. Добавьте проверку на наличие миниатюры поста: Вам нужно проверить, имеет ли пост изображение. Если да, то выведете его перед заголовком записи.

Вот пример кода, который можно вставить в файл single.php:

<?php
if (has_post_thumbnail()) {
    the_post_thumbnail('full'); // Выводит полное изображение миниатюры перед заголовком
}
?>
<h1 class="entry-title"><?php the_title(); ?></h1>

Этот код проверяет наличие миниатюры поста и, если она есть, выводит её с помощью функции the_post_thumbnail(). После этого идет заголовок записи, который генерируется с помощью the_title().

  1. Сохраните изменения: Не забудьте сохранить ваши изменения в single.php и загрузить файл обратно на сервер, если вы редактировали его локально.

Дополнительные рекомендации:

  • Если вы хотите добавить конкретное изображение, а не миниатюру записи, вы можете использовать HTML для вывода статического изображения:
<?php
// Допустим, вы хотите добавить изображение с URL
$image_url = 'https://example.com/path-to-your-image.jpg';
echo '<img src="' . esc_url($image_url) . '" alt="Описание изображения" />';
?>
<h1 class="entry-title"><?php the_title(); ?></h1>

Это решение будет более производительным, так как оно не требует выполнения дополнительных условий и проверок, которые могут замедлять загрузку страницы.

Следуя этому подходу, вы сможете более точно контролировать вывод вашего изображения перед заголовком записи.

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

Капча загружается...