Как получить URL миниатюры поста в WordPress: справочник, примеры, хуки

Получение 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!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *