• Здравствуйте.

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

    Вот код моей темы:

    <?php if ( has_post_thumbnail()  && !actuate_get_option('disable_thumb')):?>
                    <a href="<?php the_permalink() ?>"><div class="loop-thumbnail-section">
                        <div class="loop-thumbnail-overlay"  style="<?php if($image_big) { echo "background-image:url('". $src_big ."');";} ?>">
                        </div></a>
                    </div>
                    <?php endif ?>

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

    Вот это условие нужно совместить с фрагментом кода выше:

    <?php if ( has_post_thumbnail() ) { the_post_thumbnail('thumbnail'); }
                else { ?>
                <img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" />
                <?php } ?>

    Спасибо 🙂

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Здравствуйте.

    Если функция first_post_image возвращает ID этого изображения, то Вы можете воспользоваться функцией wp_get_attachment_image_src для получения конкретного размера миниатюры.

    denisco, спасибо за Ваши ответы, но к сожалению, я плохо понимаю синтаксис php, поэтому даже простое внедрение функции в структуру кода не обойдется без проблем. %)

    В другой теме у меня получилось самостоятельно использовать условие, которое в случае отсутствия миниатюры использовало первую картинку поста.

    Сейчас мне нужно сделать то же самое, но здесь синтаксис слишком запутанный для меня.

    <?php if ( has_post_thumbnail()  && !actuate_get_option('disable_thumb')):?>
                    <a href="<?php the_permalink() ?>"><div class="loop-thumbnail-section">
                        <div class="loop-thumbnail-overlay"  style="<?php if($image_big) { echo "background-image:url('". $src_big ."');";} ?>">
                        </div></a>
                    </div>
                    <?php endif ?>

    Вот здесь мне нужно где-то дописать: иначе используй картинку первого поста, такого же размера, как и миниатюра.

    Уже несколько дней пытаюсь совместить эти два куска кода во что-то целостное и рабочее, но пока безуспешно.

    Нашел плагин, который делает именно то, что мне нужно — Auto Post Thumbnail.

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

    А почему именно первое?Если я правильно понимаю тебя, то ты хочешь чтоб если у тебя в записи не была загружена картинка, чтоб отображалась какая то картинка по умолчанию?
    Почему тогда не подготовить заранее какую то картинку для вывода по умолчанию и написать что то типа:

    <?php if ( has_post_thumbnail() ) {
               the_post_thumbnail();
    } else { ?>
              <img src="<?php bloginfo('template_directory'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" />
    <?php } ?>

    Там где вывод естественно заменить на части с твоего кода.

    Не совсем так, spencer. Мне нужно чтобы отображалась первая картинка поста, если не установлена миниатюра, а не картинка по умолчанию. И с этим возникли определенные трудности.

    Плагин Auto Post Thumbnail решил проблему, но немного не так, как я ожидал. Он создает миниатюру для каждого первого изображения, что меня беспокоит. Насколько это правильно? Не слишком ли много места займут отдельно созданные миниатюры?

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

    Ты когда загружаешь картинку на сайт wordpress создает 3 дубликата этой картинки определенных размеров( настроить можно через админку или через function.php).
    Можешь на них в папке uploads посмотреть.
    Отключить генерацию ненужных размеров можно поместив следующий код в function.php текущей темы:

    function remove_plugin_image_sizes() {
    	remove_image_size('image-name');
    }
    add_action('after_setup_theme', 'remove_plugin_image_sizes', 999);

    Вместо image-name задать задать слаг отключамого размера изображения.По умолчанию доступны следующие размеры: thumbnail, medium, large, full, post-thumbnail.

    Вот тебе ссылочка, тут подробно все описано(еще и на русском), если тебе тебе эти картинки разного размера просто не нужны,то почему их бы и не отключить:
    http://wp-kama.ru/id_4409/ubiraem-generatsiyu-kopiy-zagruzhaemyih-izobrazheniy-v-wordpress.html.

    Посмотрел в uploads и ужаснулся. Минимум 6 дубликатов. Спасибо за наводку, spencer, буду разбираться.

    Кстати, а если моя тема создает размеры миниатюры постов в functions.php, нужна ли мне тогда стандартная генерация миниатюр?

    add_image_size('actuateThumb', 390, 330, true);

    И как теперь быть с неиспользуемыми изображениями, которые успели наплодиться?

    Ну и последний вопрос: нужно ли оригинальное изображение после того, как из него создались необходимые размеры?

    Насчет этого:
    add_image_size('actuateThumb', 390, 330, true);
    ответить сложно, это не стандартный размер,а придуманный разработчиком твоей темы .В functions.php есть определение нового размера (390х330) это мы видим, ну а что используется в самой теме нужно смотреть, может у тебя и другие размеры используются в теме.Удалишь нужное — что то перестанет работать)

    Насчет захламленности папки — лучше наверное не трогать если ты толком не понимаешь что используется что нет)

    Насчет оригинального изображение история та же, кто знает используется ли этот размер в твоей теме или нет.(размер со слагом full), это и есть оригинальная загруженная тобой картинка.
    Я например на данный момент стараюсь обходиться стандартными размерами вордпрес, на мой взгляд их достаточно для всех нужд, переназначить размер не составляет особых проблем под нужный.

    Наткнулся на плагин, называется Kama Thumbnail. Пока не разобрался как им правильно пользоваться, но с помощью него кажется можно реализовать то что мне нужно, не создавая дополнительных дубликатов. Что думаете?)

    Можешь попробовать если хочется конечно, но все это можно сделать и без плагина.Я вот поклонник второго способа больше.
    Я тебе скажу так — когда ты сам что то делаешь,ты понемногу начинаешь понимать как все работает,и в будущем тебе проще будет решать возникающие проблемы.Плагины не панацея, они конечно покроют какой то процент возможных проблем,но не все точно.В итоге если плагина нет ты снова будешь в тупиковой ситуации и не зная что делать.
    И последнее щас сайты надо оптимизировать под google page speed,стандартный способ вордпрес подключает их не так как надо,чтоб получить максимально быструю загрузку страницы( или по крайней мере я просто не в курсе) — я подключаю иначе.Так к чему я собственно веду — плагины тоже скорее всего будут не оптимизированы: для этого и прийдеться рыться в них и переподключать стили и скрипты, если захочешь удовлетворить всем запросам google( если конечно они там вообще есть естественно).Но это уже другая тема,есть мнения что не стоит обращать внимание на все замечания google page speed например. Я тебе просто привел пример,почему то что можно реализовать без плагинов лучше так и сделать)

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Миниатюры, первое изображение» закрыта для новых ответов.