Фильтр post_thumbnail_html в WordPress: как изменить картинку поста

Фильтр post_thumbnail_html в WordPress предоставляет разработчикам возможность изменять HTML-код, который генерируется для миниатюр постов. Это может быть полезно для настройки отображения изображений, добавления атрибутов, обертки в дополнительные теги или изменения стилей.

Как это работает

Когда вы добавляете миниатюру к посту, WordPress автоматически генерирует HTML-код для отображения этого изображения. С помощью фильтра post_thumbnail_html вы можете перехватить этот код перед его выводом на экран и внести в него изменения.

Фильтр принимает два аргумента: HTML-код миниатюры и ID поста, к которому она относится. Ваша задача — обработать этот HTML-код и вернуть его в измененном виде.

Пример использования

Рассмотрим пример, в котором мы добавляем класс CSS к миниатюре поста для стилизации. Мы будем использовать фильтр post_thumbnail_html, чтобы добавить к изображению новый класс и изменить его вывод.

Шаг 1: Добавление функции для изменения HTML миниатюры

Создайте или откройте файл functions.php вашей темы и добавьте следующий код:

function customize_post_thumbnail_html( $html, $post_id ) {
    // Проверяем, что это не админка и что миниатюра существует
    if ( !is_admin() && has_post_thumbnail( $post_id ) ) {
        // Добавляем класс CSS к тегу <img>
        $html = str_replace( '<img', '<img class="custom-thumbnail"', $html );
        
        // Можно добавить дополнительные изменения к HTML, если это необходимо
        // Например, обернуть изображение в дополнительный тег <div>
        $html = '<div class="thumbnail-wrapper">' . $html . '</div>';
    }
    
    return $html; // Возвращаем измененный HTML-код
}
add_filter( 'post_thumbnail_html', 'customize_post_thumbnail_html', 10, 2 );

Как работает этот код

  1. Функция customize_post_thumbnail_html принимает два аргумента: $html — это исходный HTML-код миниатюры, и $post_id — ID поста, к которому она относится.
  2. Мы проверяем, что это не админская страница (используя !is_admin()) и что пост имеет миниатюру (с помощью has_post_thumbnail()).
  3. Затем мы используем str_replace, чтобы добавить класс CSS custom-thumbnail к тегу <img>. Это позволяет вам стилизовать изображение с помощью CSS.
  4. Далее мы оборачиваем HTML-код миниатюры в <div> с классом thumbnail-wrapper, чтобы упростить стилизацию и работу с изображением.
  5. Наконец, мы возвращаем измененный HTML-код.

Зачем использовать post_thumbnail_html?

Фильтр post_thumbnail_html полезен в различных случаях:

  • Добавление классов для стилизации: Вы можете легко добавлять классы к изображениям для настройки внешнего вида с помощью CSS.
  • Изменение структуры HTML: Если вам нужно обернуть миниатюру в дополнительные теги для дальнейшего оформления или взаимодействия.
  • Добавление атрибутов: Вы можете добавлять дополнительные атрибуты, такие как alt, title, и другие, которые могут быть полезны для SEO и доступности.

Почитаем еще?: