Получение URL миниатюры поста в WordPress
Функция get_the_post_thumbnail_url() позволяет получить URL миниатюры, установленной для поста. Если миниатюры нет, функция вернёт значение false.
Используемые функции
get_post_thumbnail_id()— получает ID миниатюры поста.wp_get_attachment_image_url()— возвращает URL изображения по его ID.
Время выполнения функции
- 1 раз — 0.001901 сек (очень медленно)
- 50000 раз — 18 сек (медленно)
- PHP 7.0.5, WP 4.4.2
Хуки
post_thumbnail_url— фильтр, который можно использовать для модификации URL миниатюры.
Возвращаемое значение
Функция возвращает строку с URL миниатюры или false, если изображение недоступно. Если переданный размер миниатюры не зарегистрирован, будет возвращён URL оригинального изображения.
Использование функции
get_the_post_thumbnail_url( $post, $size );
$post(int/WP_Post) — ID или объект поста. По умолчанию используется текущий пост.$size(string/array) — имя зарегистрированного размера миниатюры:thumbnail,medium,largeилиfull, или размер изображения в массиве с шириной и высотой:[200, 300].
Важно учитывать, что если вы загружаете изображение меньшего размера (например, 600px по ширине) и пытаетесь получить изображение большего размера (например, 1920px по ширине), функция вернёт оригинальное изображение, даже если оно меньше нужного размера.
Если нужно получить другое изображение в случае, если указанное не существует, вы можете использовать wp_get_attachment_image_src() и проверить ширину или высоту изображения.
По умолчанию: 'post-thumbnail'
Примеры использования
1. Получение URL миниатюры поста
echo get_the_post_thumbnail_url( 6732, 'thumbnail' );
Это вернёт что-то вроде:
http://wp-kama.com/wp-content/uploads/2016/03/post-meta-fields4-80x80.png
2. Правильное использование функции в цикле
Вот как правильно использовать функцию внутри цикла while:
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
// Получаем URL изображения полной миниатюры
$featured_img_url = get_the_post_thumbnail_url( get_the_ID(), 'full' );
// Ссылка на миниатюру для использования с lightbox
echo '';
the_post_thumbnail( 'thumbnail' );
echo '';
endwhile;
endif;
Список изменений
Функция была представлена в версии 4.4.0.
Исходный код функции
function get_the_post_thumbnail_url( $post = null, $size = 'post-thumbnail' ) {
$post_thumbnail_id = get_post_thumbnail_id( $post );
if ( ! $post_thumbnail_id ) {
return false;
}
$thumbnail_url = wp_get_attachment_image_url( $post_thumbnail_id, $size );
/**
* Фильтруем URL миниатюры поста.
*
* @since 5.9.0
*
* @param string|false $thumbnail_url URL миниатюры поста или false, если поста не существует.
* @param int|WP_Post|null $post ID поста или объект WP_Post. По умолчанию - глобальный $post.
* @param string|int[] $size Зарегистрированный размер изображения для получения источника или массив
* с размерами высоты и ширины. По умолчанию 'post-thumbnail'.
*/
return apply_filters( 'post_thumbnail_url', $thumbnail_url, $post, $size );
}
Связанные функции
delete_post_thumbnail()— удалить миниатюру поста.get_post_thumbnail_id()— получить ID миниатюры поста.get_the_post_thumbnail()— получить HTML-код миниатюры поста.has_post_thumbnail()— проверить, есть ли у поста миниатюра.set_post_thumbnail()— установить миниатюру для поста.
Воспользуйтесь этой функцией для удобного управления миниатюрами ваших постов и улучшения внешнего вида вашего сайта на WordPress!