Функция get_post_thumbnail_id() используется для получения ID миниатюры записи в WordPress. Это может быть полезно, когда необходимо обработать изображение поста отдельно, получить его URL или провести другие манипуляции. ID миниатюры — это идентификатор вложения, под которым изображение хранится в базе данных.
get_post_thumbnail_id( int|WP_Post $post = null ): int|false
- $post (optional): Принимает ID записи или объект записи WP_Post. Если параметр не указан, используется текущая глобальная запись.
- Возвращаемое значение: Возвращает ID миниатюры в виде целого числа. Если миниатюра не установлена — возвращает false.
Пример 1: Получение ID миниатюры поста
Если у вас есть пост с ID 42, и вы хотите получить ID его миниатюры:
$post_thumbnail_id = get_post_thumbnail_id( 42 );
echo $post_thumbnail_id; // Выведет, например, 543
Этот код извлекает ID миниатюры для записи с ID 42. Если миниатюра отсутствует, функция вернет false.
Пример 2: Использование внутри Цикла WordPress
Если функция вызывается внутри Цикла WordPress, можно не передавать параметр $post, так как будет использован текущий пост:
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        $thumbnail_id = get_post_thumbnail_id();
        echo 'Миниатюра ID: ' . $thumbnail_id;
    }
}
Здесь каждый пост внутри цикла проверяется на наличие миниатюры, и выводится её ID.
Пример 3: Получение всех вложений, кроме миниатюры
Допустим, вы хотите получить все прикрепленные к посту файлы, кроме миниатюры:
$post_id = 68; // ID поста
$args = array(
    'post_type'   => 'attachment',
    'post_status' => 'inherit',
    'post_parent' => $post_id,
    'exclude'     => get_post_thumbnail_id( $post_id ),
);
$attachments = get_posts( $args );
if ( ! empty( $attachments ) ) {
    foreach ( $attachments as $attachment ) {
        echo 'ID вложения: ' . $attachment->ID . '<br>';
    }
}
Этот код исключает миниатюру поста и выводит все остальные вложенные файлы.
Как добавить поддержку миниатюр в теме
Прежде чем использовать get_post_thumbnail_id(), необходимо убедиться, что тема поддерживает миниатюры постов. Это активируется добавлением следующего кода в файл functions.php вашей темы:
add_theme_support( 'post-thumbnails' );После этого в постах появится возможность добавлять миниатюры.
Пример 4: Установка миниатюры для поста
Для установки миниатюры поста используйте функцию set_post_thumbnail():
$post_id = 123;
$thumbnail_id = 456;
set_post_thumbnail( $post_id, $thumbnail_id );
Здесь миниатюра с ID 456 будет назначена для поста с ID 123.
Альтернативные методы получения данных о миниатюре
Если необходимо получить URL миниатюры, используйте функцию get_the_post_thumbnail_url():
$thumbnail_url = get_the_post_thumbnail_url( 42 );
echo $thumbnail_url; // Выведет полный URL изображения
Функция возвращает URL изображения миниатюры для указанного поста.
Заключение
Функция get_post_thumbnail_id() предоставляет удобный способ получить ID миниатюры для записи, что открывает возможности для работы с изображениями постов. Ее можно использовать как внутри цикла, так и вне его, получая доступ к изображениям или исключая их из выборки.
