Поставить на миниатюру записи WordPress изображение, без class="wp-image-***"?
Есть множество плагинов, которые могут на миниатюру поставить первое изображение записи. Но если записи грузили импортом (xml файл), без ручной вставки изображения, у последнего нет class="wp-image-***". И плагины для миниатюр не воспринимают его за медиафайл. Как это обойти , чтобы вручную не вставлять в страницу первые изображения или вручную не задавать миниатюры?
Дополнительно:
У тебя в посте нет изображения записи (а не миниатюры), а картинка вставлена непосредственно в начало поста? Я правильно понял проблему?
После импорта записей, в каждой из которых есть несколько картинок, я пытаюсь плагинами создать миниатюры в список записей, из первых картинок. Полно таких плагинов однотипных. Но плагины не работают, тк у моих фото нет class="wp-image-***, тк я их грузил не руками в запись.
И да, ещё вопрос - эти картинки есть в медиатеке (библиотеке медиафайлов)?
Ответы:
Если тема поддерживает изображение записи и эти изображения есть в медиатеке, то достаточно подобрать плагин, который создаст изображение записи.
Не на лету будет поставлять на фронте, а пропишет в базу!
- Тема поддерживает, изображение в тексте и медиатеке. Ни один плагин без class="wp-image-***" не берет изображение из текста, на фото выше только часть проверенных.
- alexfromomsk, утомил ты с классом... Классы ГЕНЕРИРУЮТСЯ при выводе НА ФРОНТЕ. У тебя задача БЕКЭНДА. И её легко можно решить плагинами.
- Вот я поставил первый попавшийся и он всё делает. Правда, при ручном обновлении поста.
Но я думаю можно найти и те которые обновлять пост сами. Или если постом не сотни тыщ можно и массово руками обновить из админки.
- Refguser, еще поэкспериментировал, даже добавленная через меню картинка добавляется каждый раз на предпросмотр (при обновлении записи), пока не удаляю class="wp-image-330". Как только этого нет куска , на изображении записи плагин перестает ставить при обновлении.
- Refguser, Refguser, Оба скриншота после нажатия кнопки обновить, разница в тексте только в class="wp-image-330"
- alexfromomsk, от ты упорный... классы тут зависят как фаза луны. Хоть бы чуток подумал - я что, гифку рисовал руками?
Последний раз: выбери НОРАМАЛЬНЫЙ плагин, который не на лету будет поставлять на фронте, а пропишет в базу!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос





Класс
wp-image-123появляется только у изображений, которые уже есть в медиабиблиотеке WordPress. Если картинки пришли импортом как обычные внешние URL в тексте, WordPress не считает их вложениями и не может автоматически поставить их как миниатюру через стандартную логику.Нужно не искать класс, а брать первый
img src, скачивать изображение в медиабиблиотеку и назначать его featured image. Это можно сделать скриптом или хуком после импорта.Пример базовой функции:
function set_featured_image_from_first_external_img($post_id) { $post = get_post($post_id); if (!$post || has_post_thumbnail($post_id)) { return; } if (!preg_match('/<img[^&gt]+src=["']([^"']+)["']/i', $post->post_content, $m)) { return; } $url = esc_url_raw($m[1]); require_once ABSPATH . 'wp-admin/includes/media.php'; require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/image.php'; $attachment_id = media_sideload_image($url, $post_id, null, 'id'); if (!is_wp_error($attachment_id)) { set_post_thumbnail($post_id, $attachment_id); } }
Запускать это лучше не на каждом открытии страницы, а один раз после импорта: через WP-CLI, временный admin-инструмент или отдельный скрипт. Иначе сайт будет пытаться скачивать картинки при просмотрах, что плохо для скорости и может создать дубли.
Если внешние изображения нельзя скачивать из-за авторских прав или экономии места, используйте плагин типа FIFU, который хранит внешний URL как миниатюру. Но это уже не стандартная миниатюра WordPress, и некоторые темы/плагины могут работать с ней иначе.
Итог: для настоящей миниатюры нужно импортировать картинку в медиабиблиотеку и назначить её через
set_post_thumbnail(). Классwp-image-*для внешних изображений сам не появится.