get_the_post_thumbnail() WP 2.9.0

Отримує IMG тег мініатюри посту, якщо вона існує.

Отримує мініатюру посту, яка встановлена ​​на сторінці редагування запису та формує html код картинки <img> на основі отриманого посилання на мініатюру. Якщо мініатюру отримати не вдалося (вона не встановлена), буде повернено порожній результат .

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

Коли потрібно отримати тільки URL-адреси картинки, використовуйте get_the_post_thumbnail_url() .

Коли до теми додається підтримка post-thumbnail, реєструється спеціальний розмір зображення post-thumbnail, який відрізняється від розміру thumbnail, керованого через Настройки > Медиа. При використанні цієї або пов’язаних функцій використовується цей розмір 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_post_thumbnail_id()
Основа для:
the_post_thumbnail()
1 раз – 0.001687 сек
(дуже повільно) | 50000 разів – 5.72 сек
(швидко) |
PHP 7.1.5, WP 4.8.2

Хуки з функції
$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

#1 Базовий приклад використання

$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>
0

#2 Що поверне функція

$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"
/>
*/
0

#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)); // Довільний розмір

список змін

З версії 2.9.0Введено.
З версії 4.4.0$post can be a post ID або WP_Post object.

get the post thumbnail WP 6.0.2

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 `$post_id` parameter.
	 *
	 * @param string|int[] $size Requested image size. Can be any registered image size name, or
	 * an array of width and height values ​​in pixels (in that order).
	 * @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.
		 *
		 * Виконує "just in time" filtering all filters in wp_get_attachment_image().
		 *
		 * @ Since 2.9.0
		 *
		 * @param int $post_id The post ID.
		 * @param int $post_thumbnail_id The post thumbnail ID.
		 * @param string|int[] $size Requested image size. Can be any registered image size name, or
		 * an array of width and height values ​​in pixels (in that order).
		 */
		do_action( 'begin_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size);

		if ( in_the_loop() ) {
			update_post_thumbnail_cache();
		}

		// Get the 'loading' attribute value to use as default, знижуючи їх за допомогою default from
		// `wp_get_attachment_image()`.
		$loading = wp_get_loading_attr_default( 'the_post_thumbnail');

		// Add the default to given attributes unless they already include a 'loading' directive.
		if (empty($attr)) {
			$attr = array( 'loading' => $loading );
		} elseif ( is_array( $attr ) && ! array_key_exists( 'loading', $attr ) ) {
			$attr['loading'] = $loading;
		} elseif ( is_string( $attr ) && ! preg_match( '/(^|&)loading=/', $attr ) ) {
			$attr .= '&loading=' . $loading;
		}

		$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 int $post_thumbnail_id The post thumbnail ID.
		 * @param string|int[] $size Requested image size. Can be any registered image size name, or
		 * an array of width and height values ​​in pixels (in that order).
		 */
		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 int $post_thumbnail_id Post thumbnail ID, або 0 якщо не буде один.
	 * @param string|int[] $size Requested image size. Can be any registered image size name, or
	 * an array of width and height values ​​in pixels (in that order).
	 * @param string|array $attr Query string або array of attributes.
	 */
	return apply_filters( 'post_thumbnail_html', $html, $post->ID, $post_thumbnail_id, $size, $attr );
}