Поставить на миниатюру записи WordPress изображение, без class="wp-image-***"?

Ссылка скопирована
1 ответ

Есть множество плагинов, которые могут на миниатюру поставить первое изображение записи. Но если записи грузили импортом (xml файл), без ручной вставки изображения, у последнего нет class="wp-image-***". И плагины для миниатюр не воспринимают его за медиафайл. Как это обойти , чтобы вручную не вставлять в страницу первые изображения или вручную не задавать миниатюры?

Дополнительно:

У тебя в посте нет изображения записи (а не миниатюры), а картинка вставлена непосредственно в начало поста? Я правильно понял проблему?

  • Refguser,

    Поставить на миниатюру записи Wordpress изображение, без class="wp-image-***"?

  • Refguser,
    После импорта записей, в каждой из которых есть несколько картинок, я пытаюсь плагинами создать миниатюры в список записей, из первых картинок. Полно таких плагинов однотипных. Но плагины не работают, тк у моих фото нет class="wp-image-***, тк я их грузил не руками в запись.
  • alexfromomsk, зачем ты показываешь плагины и повторяешь тот же набор букв что и в вопросе? Я тебе задал вопрос - ты не понимаешь о чем речь? (а классы вообще из другой оперы)

    И да, ещё вопрос - эти картинки есть в медиатеке (библиотеке медиафайлов)?

  • Refguser, Картинки в медиафайлах есть, в записях они оттуда берутся. Миниатюры - картинки в списке записей, у каждой записи рядом с названием и вступительным абзацем. Пока нет подобного класса в img, он не берется плагинами в обработку для создания миниатюр, если подставляю к первой картинке в записи class="wp-image-***", на миниатюру ставиться картинка... другая, с другой статьи, с тем *** что я ввел. *** -видимо это какой-то id при ручной загрузки картинки в запись, при импорте его нет.
  • alexfromomsk, тема поддерживает изображение записи? Справа есть метабокс для него?

    Поставить на миниатюру записи Wordpress изображение, без class="wp-image-***"?

  • Refguser, список плагинов чтобы показать изображения записи = миниатюры, а не я это название придумал
  • Refguser, Есть. Если я вручную туда закину картинку она появится на миниатюре. Но это вручную, а планируется сотни записей импортировать. Даже если не через изображение записи, а просто вручную вставлю в текст записи картинку, за счет плагинов также появится на миниатюре. И единственное что их отличает от импортированных картинок, это class="wp-image-***"
  • Ответы:

    Если тема поддерживает изображение записи и эти изображения есть в медиатеке, то достаточно подобрать плагин, который создаст изображение записи.
    Не на лету будет поставлять на фронте, а пропишет в базу!

    • Тема поддерживает, изображение в тексте и медиатеке. Ни один плагин без class="wp-image-***" не берет изображение из текста, на фото выше только часть проверенных.
    • alexfromomsk, утомил ты с классом... Классы ГЕНЕРИРУЮТСЯ при выводе НА ФРОНТЕ. У тебя задача БЕКЭНДА. И её легко можно решить плагинами.
    • Вот я поставил первый попавшийся и он всё делает. Правда, при ручном обновлении поста.

      Поставить на миниатюру записи Wordpress изображение, без class="wp-image-***"?

      Но я думаю можно найти и те которые обновлять пост сами. Или если постом не сотни тыщ можно и массово руками обновить из админки.

    • Refguser, еще поэкспериментировал, даже добавленная через меню картинка добавляется каждый раз на предпросмотр (при обновлении записи), пока не удаляю class="wp-image-330". Как только этого нет куска , на изображении записи плагин перестает ставить при обновлении.
    • Refguser, Refguser, Оба скриншота после нажатия кнопки обновить, разница в тексте только в class="wp-image-330"

      Поставить на миниатюру записи Wordpress изображение, без class="wp-image-***"?

      Поставить на миниатюру записи Wordpress изображение, без class="wp-image-***"?

    • alexfromomsk, от ты упорный... классы тут зависят как фаза луны. Хоть бы чуток подумал - я что, гифку рисовал руками?
      Последний раз: выбери НОРАМАЛЬНЫЙ плагин, который не на лету будет поставлять на фронте, а пропишет в базу!
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Кирилл JS Ответ

    Класс 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);
        }
    }

    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-* для внешних изображений сам не появится.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно