Функция 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 миниатюры для записи, что открывает возможности для работы с изображениями постов. Ее можно использовать как внутри цикла, так и вне его, получая доступ к изображениям или исключая их из выборки.