Миниатюры для поста в WP 2.9 на практике
В продолжение прошлого поста про новую функцию wordpress 2.9 и создание превью для постов блога — сегодня немного практики. Раньше мы рассказали как активировать функцию для админки, теперь что же нужно использовать в коде шаблона дабы выводить результаты ее работы.
Атрибуты img для вывода превью
Допустим, мы хотим задать размер выводимого изображения миниатюры, а также специальный класс для картинки.
< ?php the_post_thumbnail(array( 200,200 ), array( 'class' => 'alignleft' )); ?> |
Можно использовать несколько классов либо добавлять другие атрибуты тега img как, например, переопределить alt – полезный для поисковиков.
<?php the_post_thumbnail('medium', array('class' => 'alignleft another_class')); ?> // задаем дополнительный класс <?php the_post_thumbnail('medium', array('class' => 'alignleft', 'alt' => 'alttext')); ?> // класс + атрибут alt |
Для заголовка title изображения превью мы можем также использовать переопределение, если нам это нужно. Без упоминания этих атрибутов по умолчанию автоматически выведутся значения из заданного вами в Media Library при загрузке картинки.
<?php the_post_thumbnail('medium', array('class' => 'alignleft', 'alt' => 'alttext', 'title' => 'titletext')); ?> |
Использование Media Settings
Есть в настройках wordpress блога такой раздел как «Медиафайлы» (Media Settings). Там можно указывать размер для миниатюрных изображений. Насколько я понимаю, если у вас есть блог с множеством зарегистрированных пользователей, то они могут эти настройки менять под себя. Так это или нет сказать сложно, но предлагаю научиться эти значения использовать при генерации миниатюр – мало ли пригодится для чего.
<?php $width = get_option('thumbnail_size_w') / 2; //получить указанную ширину превьюшки $height = get_option('thumbnail_size_h') /2; //получить указанную высоту превьюшки the_post_thumbnail(array($width, $height), array('class' => 'alignleft')); ?> |
В тех же медиа настройках есть 2 других размера «средний» и «большой» с указаниями других величин ширины и высоты изображения. Чтобы их считать нужно юзать код:
<?php get_option('medium_size_w'); //ширина "среднего" изображения ?> <?php get_option('medium_size_h'); //высота "среднего" изображения ?> <?php get_option('large_size_w'); //ширина "большого" изображения ?> <?php get_option('large_size_h'); //ширина "большого" изображения ?> <?php get_option('thumbnail_crop'); //проверка на вырезание части изображения, On=1, Off=0 ?> |
Совместимость с другими версиями WordPress
Каждый «правильный» разработчик шаблона wordpress предусматривает его использование на разных версиях системы – с поддержкой виджетов или плагинов. В таком случае он добавляет в код проверки для совместимости шаблона, где при отсутствии той или иной функции включается стандартная обработка или вовсе ничего не происходит.
В нашем случае возникает еще одна проблема (задача) – что если шаблон и версия wordpress вывод миниатюр поддерживает, но они ведь не заданы во всех постах блога. На помощь нам придет код:
if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) { the_post_thumbnail(); } else { $postimage = get_post_meta($post->ID, 'post-image', true); if ($postimage) { echo '<img src="'.$postimage.'" alt="" />'; } } |
Здесь первым делом проверяется поддержки функции превью для постов, а также наличие этой самой миниатюры. Если все гуд – картинка выводится, в противном случае будет использован другой вариант. В данном случае используется метод произвольных полей custom fields — считывается ссылка для поля с названием post-image. Хотя, конечно, здесь может быть любой другой используемый вами метод, тот же с получением первой картинки поста вполне подходит.
Есть, кстати, возможность получить первое изображение из библиотеки media library
if ( function_exists('has_post_thumbnail') && has_post_thumbnail() ) { the_post_thumbnail(); // @param: array(height, width) } else { // via mediathek $attachments = get_children( array( 'post_parent' => get_the_ID(), 'post_type' => 'attachment', 'numberposts' => 1, // show all -1 'post_status' => 'inherit', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ASC' ) ); foreach ( $attachments as $attachment_id => $attachment ) { echo wp_get_attachment_image( $attachment_id ); } } |
Подробнее о методе можно почитать здесь.
Отображение миниатюр в RSS блога
Даже такое оригинальное решение нашел на одном из блогов. Я так подозреваю, что использоваться оно должно в том случае, если в RSS фид идет первая часть поста (анонс) без всяких там картинок и при этом нужно добавить миниатюру.
Автор рассказывает мол the_post_thumbnail – одно из любимых нововведений в WordPress 2.9, но недавно он с ужасом обнаружил, что заданное превью не было включено в RSS блога. Собственно, для этого он предлагает добавить в файл functions.php немного полезного кода:
function insertThumbnailRSS($content) { global $post; if ( has_post_thumbnail( $post->ID ) ){ $content = '<p>' . get_the_post_thumbnail( $post->ID, 'medium' ) . '</p>' . $content; } return $content; } add_filter('the_excerpt_rss', 'insertThumbnailRSS'); add_filter('the_content_feed', 'insertThumbnailRSS'); |
Вот, как оказывается, все не просто с этими превью для постов в WordPress 2.9.
комментария 33 к статье “Миниатюры для поста в WP 2.9 на практике”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Оптимизируем WordPress header и удаляем лишний код (5,19 из 7, голосов - 43)
- Как создать пункт меню без ссылки в wordpress (6,39 из 7, голосов - 23)
- Добавление кнопки Вконтакте, Facebook и Twitter в wordpress блог (6,14 из 7, голосов - 21)
- Выполнение jQuery скриптов при выборе вариаций товаров в WooCommerce (3,96 из 7, голосов - 26)
- Хаки для вариаций товаров в WooCommerce (5,00 из 7, голосов - 20)
- Вывод текста в блоге только на главной (6,85 из 7, голосов - 13)
- Как убрать category в WordPress категориях — зачем это делать, плагины для реализации (5,31 из 7, голосов - 16)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Владислав, в файле шаблона вокруг функции вывода миниатюры the_post_thumbnail можете добавлять любые теги. На developer.wordpress.org можно погуглить некоторые примеры использования. Функция миниатюры возвращает картинку в виде IMG кода HTML.
Здравствуйте Как запретить вывод изображений формата gif в формировании автоматических миниатюр
Аrus, не знаю, с такой задачей не сталкивался, нужно гуглить решение.