WordPress как на ладони
wordpress jino

get_the_post_thumbnail() WP 2.9.0

Получает html код (img) миниатюры поста, если она существует.

Получает миниатюру поста, которая установлена на странице редактирования записи и формирует html код картинки <img> на основе полученной ссылки на миниатюру. Если миниатюру получить не удалось (она не установлена), то будет возвращен пустой результат ''.

Заметка! Чтобы для поста можно было определить картинку миниатюру, нужно активировать такую возможность функцией add_theme_support( 'post-thumbnails' ); в файле шаблона funсtions.php.

Используется в: the_post_thumbnail().
Работает на основе: wp_get_attachment_image(), get_post_thumbnail_id()
✈ 1 раз = 0.001687с = очень медленно | 50000 раз = 5.72с = быстро PHP 7.1.5, WP 4.8.2
Хуки из функции:
Возвращает

Cтроку.

  • HTML код картинки <img>.
  • Пустую строку, если не удалось найти картинку миниатюру записи.

Использование

$thumbnail = get_the_post_thumbnail( $id, $size, $attr );
$id(число/WP_Post)
ID или объект поста, миниатюру которого надо получить.
По умолчанию: null (ID текущего поста)
$size(строка/массив)

Размер необходимой миниатюры:

  • Можно указать строку: thumbnail, medium, large или full.
  • Или массив из двух элементов, обозначающих размер миниатюры (ширину и высоту): array(32, 32).

По умолчанию: 'post-thumbnail'

$attr(строка/массив)

Строка в виде запроса или массив аргументов, которые определят атрибуты тега img.

$default_attr = array(
	'src'   => $src,
	'class' => "attachment-$size",
	'alt'   => trim(strip_tags( $attachment->post_excerpt )),
	'title' => trim(strip_tags( $attachment->post_title )),
);

По умолчанию: ''

Примеры

#1 Что вернет функция

$thumb = get_the_post_thumbnail( 6462, 'thumbnail' );

/* $thumb будет равен
<img
	width="80" height="80"
	src="/wp-content/uploads/2016/07/http-api-80x80.png"
	class="attachment-thumbnail size-thumbnail wp-post-image"
	alt="WordPress HTTP API"
/>
*/

#2 Базовый пример использования

<?php $pages = get_pages(array( 'child_of'=>1 )); ?>
<ul>
	<?php foreach( $pages as $page ){ ?>
		<li>
			<?php echo get_the_post_thumbnail( $page->ID, 'thumbnail'); ?>
			<h1><?php echo get_the_title($page); ?></h1>
			<?php echo get_the_excerpt($page); ?>
		</li>
	<?php } ?>
</ul>

#3 Размеры миниатюр

Размеры для картинок в WordPress обозначаются условно:

  • thumbnail - маленькая миниатюра;
  • medium - средняя;
  • large - большая;
  • full - оригинал, картинка которую мы загружали.

Указать конкретные размеры в пикселях для каждого типа можно в настройках (Параметры > мадиафайлы).

Эти примеры показывают, как можно получить картинку нужного размера:

get_the_post_thumbnail( $id );         // без параметра $size

get_the_post_thumbnail( $id, 'thumbnail' );     // маленькая миниатюра
get_the_post_thumbnail( $id, 'medium' );        // среднего размера
get_the_post_thumbnail( $id, 'large' );         // большого размера

get_the_post_thumbnail( $id, array(100,100) ); // произвольный размер

Стилизация миниатюр

Миниатюры создаваемые функцией get_the_post_thumbnail() получают класс wp-post-image (class="wp-post-image"). Также, устанавливается класс в зависимости от размера миниатюры. В CSS миниатюры стилизуются через следующие селекторы:

img.wp-post-image
img.attachment-thumbnail
img.attachment-medium
img.attachment-large
img.attachment-full

Также можно задать свой класс:

<?php echo get_the_post_thumbnail( $id, 'thumbnail', array('class' => 'alignleft') ); ?>

Код get the post thumbnail: wp-includes/post-thumbnail-template.php WP 4.9

<?php
function get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' ) {
	$post = get_post( $post );
	if ( ! $post ) {
		return '';
	}
	$post_thumbnail_id = get_post_thumbnail_id( $post );

	/**
	 * Filters the post thumbnail size.
	 *
	 * @since 2.9.0
	 * @since 4.9.0 Added the `$post_id` parameter.
	 *
	 * @param string|array $size    The post thumbnail size. Image size or array of width and height
	 *                              values (in that order). Default 'post-thumbnail'.
	 * @param int          $post_id The post ID.
	 */
	$size = apply_filters( 'post_thumbnail_size', $size, $post->ID );

	if ( $post_thumbnail_id ) {

		/**
		 * Fires before fetching the post thumbnail HTML.
		 *
		 * Provides "just in time" filtering of all filters in wp_get_attachment_image().
		 *
		 * @since 2.9.0
		 *
		 * @param int          $post_id           The post ID.
		 * @param string       $post_thumbnail_id The post thumbnail ID.
		 * @param string|array $size              The post thumbnail size. Image size or array of width
		 *                                        and height values (in that order). Default 'post-thumbnail'.
		 */
		do_action( 'begin_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );
		if ( in_the_loop() )
			update_post_thumbnail_cache();
		$html = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );

		/**
		 * Fires after fetching the post thumbnail HTML.
		 *
		 * @since 2.9.0
		 *
		 * @param int          $post_id           The post ID.
		 * @param string       $post_thumbnail_id The post thumbnail ID.
		 * @param string|array $size              The post thumbnail size. Image size or array of width
		 *                                        and height values (in that order). Default 'post-thumbnail'.
		 */
		do_action( 'end_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );

	} else {
		$html = '';
	}
	/**
	 * Filters the post thumbnail HTML.
	 *
	 * @since 2.9.0
	 *
	 * @param string       $html              The post thumbnail HTML.
	 * @param int          $post_id           The post ID.
	 * @param string       $post_thumbnail_id The post thumbnail ID.
	 * @param string|array $size              The post thumbnail size. Image size or array of width and height
	 *                                        values (in that order). Default 'post-thumbnail'.
	 * @param string       $attr              Query string of attributes.
	 */
	return apply_filters( 'post_thumbnail_html', $html, $post->ID, $post_thumbnail_id, $size, $attr );
}

Cвязанные функции

Из метки: thumbnail (image картинки-миниатюры)

Еще из раздела: Миниатюры

get_the_post_thumbnail 52 комментария
Полезные 3 Вопросы 4 Все
  • Андрей

    Можно ли в вордпресс каждой миниатюре задать свой id?

    Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий