В WordPress по умолчанию при отображении списка записей или на страницах поста часто используется функция вывода миниатюры записи (featured image). Иногда возникает необходимость убрать это изображение или заменить его на другое — например, если в теме используется автоматическая подстановка изображения из первого изображения в контенте, или если миниатюра не задана, а тема ставит дефолтное изображение. В этой статье разберём, как именно можно удалить или изменить автоматическое изображение в постах WordPress, используя код и плагины.
Почему появляется автоматическое изображение в постах?
Механизм вывода миниатюр в WordPress основан на использовании функции has_post_thumbnail() и get_the_post_thumbnail(). Если у поста задано избранное изображение, оно выводится в списках и на странице записи. Если миниатюра не задана, тема может подставлять либо дефолтное изображение, либо извлекать первое изображение из контента автоматически с помощью кастомных функций.
Автоматическое подставление изображения удобно, но не всегда подходит. Например, на сайтах с нестандартным дизайном или когда нужно экономить трафик и не выводить лишние картинки.
Следовательно, чтобы изменить поведение, можно:
- Удалить миниатюру полностью из вывода;
- Заменить дефолтное изображение на своё;
- Изменить логику автоматического определения изображения;
- Использовать плагины для управления миниатюрами.
Удаление автоматического изображения через код
Самый надёжный метод — отредактировать тему либо добавить фильтр, который будет отключать вывод миниатюры. Если у вас дочерняя тема, удобнее всего в functions.php добавить следующий код:
function wpcom_remove_post_thumbnail($html, $post_id, $post_thumbnail_id, $size, $attr) {
// Возвращаем пустую строку, тем самым отключая вывод миниатюры
return '';
}
add_filter('post_thumbnail_html', 'wpcom_remove_post_thumbnail', 10, 5);
Этот фильтр перехватывает HTML миниатюры и заменяет его на пустой вывод. Таким образом, миниатюра не будет отображаться ни в каких местах, где вызывается the_post_thumbnail().
Если хотите отключить миниатюру только в конкретных частях сайта, например, на главной странице, добавьте условие:
function wpcom_remove_post_thumbnail_conditional($html, $post_id, $post_thumbnail_id, $size, $attr) {
if (is_home() || is_archive()) {
return '';
}
return $html;
}
add_filter('post_thumbnail_html', 'wpcom_remove_post_thumbnail_conditional', 10, 5);
Замена автоматического изображения на своё дефолтное
Иногда нужно, чтобы если миниатюра не задана, выводилось своё изображение-заглушка. Для этого можно добавить фильтр, который проверит, есть ли миниатюра у поста, и если нет — подставит своё изображение.
function wpcom_custom_default_thumbnail($html, $post_id, $post_thumbnail_id, $size, $attr) {
if (empty($html)) {
$default_image_url = get_stylesheet_directory_uri() . '/images/default-thumb.jpg'; // путь к дефолтной картинке
$html = '<img src="' . esc_url($default_image_url) . '" alt="' . esc_attr(get_the_title($post_id)) . '" />';
}
return $html;
}
add_filter('post_thumbnail_html', 'wpcom_custom_default_thumbnail', 10, 5);
Обязательно добавьте файл default-thumb.jpg в папку темы images. Так вы сможете контролировать внешний вид миниатюр для записей без заданного изображения.
Извлечение первого изображения из контента, если миниатюра не задана
Если вы хотите, чтобы миниатюра автоматически бралась из первого изображения внутри текста записи, можно использовать следующий пример функции. Она будет возвращать HTML с изображением или пустую строку, если изображений нет.
function wpcom_get_first_image_from_content($post_id) {
$post = get_post($post_id);
if (!$post) return '';
preg_match('/<img.+src=["']([^"']+)["'].*>/i', $post->post_content, $matches);
if (!empty($matches[1])) {
$img_url = $matches[1];
return '<img src="' . esc_url($img_url) . '" alt="' . esc_attr(get_the_title($post_id)) . '" />';
}
return '';
}
function wpcom_auto_thumbnail_fallback($html, $post_id, $post_thumbnail_id, $size, $attr) {
if (empty($html)) {
$html = wpcom_get_first_image_from_content($post_id);
}
return $html;
}
add_filter('post_thumbnail_html', 'wpcom_auto_thumbnail_fallback', 10, 5);
Так вы сможете динамично подставлять первое изображение из записи вместо миниатюры.
Рекомендованные плагины для управления миниатюрами
Если не хотите вникать в код, можно использовать плагины, которые позволяют контролировать автоматическое изображение в WordPress:
- Default Featured Image — задаёт глобальное дефолтное изображение для всех записей без миниатюры.
- Auto Post Thumbnail — автоматически создаёт миниатюру из первого изображения в записи, если она не задана.
- Quick Featured Images — позволяет массово назначать, менять или удалять миниатюры.
Все эти плагины можно найти на официальном репозитории WordPress, а также на сайте WPSHOP.RU с удобной установкой и поддержкой.
Особенности работы с темами и миниатюрами
Иногда тема может иметь собственные функции вывода миниатюр и даже кеширование. В таких случаях фильтр post_thumbnail_html может не сработать, или нужно искать в коде темы шаблоны, где вызывается the_post_thumbnail(), и править их.
Если у вас тема с поддержкой Gutenberg, обратите внимание на блоки, которые выводят изображения. Они могут иметь собственные настройки. В таких случаях полезен плагин Clearfy Pro, который помогает управлять выводом лишних элементов.
Удаление миниатюр на уровне шаблона
Если фильтры не помогают, можно прямо в файлах темы (например, content.php, index.php, archive.php) удалить или закомментировать вызовы:
<?php if ( has_post_thumbnail() ) {
the_post_thumbnail('thumbnail');
} ?>
Или заменить их на кастомный вывод по вашему желанию.
Заключение
Управление автоматическим изображением в постах WordPress — достаточно частая задача для разработчиков и администраторов сайтов. Используя фильтры, можно легко отключить вывод миниатюр, заменить их на дефолтные или динамически подставлять первое изображение из контента. Если не хочется писать код, плагины помогут сделать это через интерфейс.
Для более тонкой настройки рекомендую изучить тему и шаблоны вашей темы, а также использовать инструменты типа Clearfy Pro для оптимизации и управления выводом элементов.