Янв
4
33

Миниатюры для поста в WP 2.9 на практике

логотип wordpressВ продолжение прошлого поста про новую функцию 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.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 3, средний балл: 6,67 из 7)
Загрузка...

категория Категории: Хаки и секреты;
теги Теги: , , , , .

комментария 33 к статье “Миниатюры для поста в WP 2.9 на практике”

  • Tod   11.04.2016

    Владислав, в файле шаблона вокруг функции вывода миниатюры the_post_thumbnail можете добавлять любые теги. На developer.wordpress.org можно погуглить некоторые примеры использования. Функция миниатюры возвращает картинку в виде IMG кода HTML.

  • Аrus   23.11.2016

    Здравствуйте Как запретить вывод изображений формата gif в формировании автоматических миниатюр

  • Tod   28.11.2016

    Аrus, не знаю, с такой задачей не сталкивался, нужно гуглить решение.

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости