set_post_thumbnail()
Встановлює мініатюру запису за переданими ID запису та ID вкладення (медіафайл). Якщо вказаного вкладення немає у базі даних, то функція видаляє мініатюру запису.
Хуків немає.
Повертає
int|true|false.
true– Якщо мініатюра була та дані були оновлені. Або якщо успішно спрацювала delete_post_meta() .false– якщо не вдалося вставити дані або якщо вказано ID, яке вже встановлено.Число– Тільки під час створення метаполя. ID вставленого рядка метаданих (meta_id) – повертається функцією update_post_meta() .
При вставці (не оновленні), значення, що повертається не “true” при успіху, а “число”.
Поверне false під час другого запуску. Якщо зображення вже інстальовано і ви передаєте той самий ID вкладення. Так відбувається тому, що update_post_meta() повертає false, коли значення не змінилося.
Використання
set_post_thumbnail($post, $thumbnail_id);
- $post
(число/об’єкт) (обов’язковий) - ID запису, який потрібно встановити мініатюру. Можна надіслати об’єкт запису.
- $thumbnail_id
(число) (обов’язковий) - ID вкладення, яке потрібно прикріпити.
Приклади
#1 Встановимо мініатюру запису
Допустимо нам потрібно встановити мініатюру запису 56. ID медіафайлу (вкладення) нам відомий і дорівнює 89:
$post_id = 56; $ attach_id = 89; $ set_thumb = set_post_thumbnail ($ post_id, $ attach_id); if( $set_thumb ) echo 'The miniature is set.'; else echo 'The thumbnail has been deleted.';
#2 Автоматичне встановлення мініатюри запису
Цей код автоматично ставити мініатюру запису під час збереження. Якщо запис не має мініатюри.
Встановлюватиметься перша прикріплена до запису картинка.
add_action( 'future_to_publish', 'autoset_featured');
add_action( 'draft_to_publish', 'autoset_featured');
add_action( 'new_to_publish', 'autoset_featured');
add_action( 'pending_to_publish', 'autoset_featured');
//add_action( 'the_post', 'autoset_featured');
add_action( 'save_post', 'autoset_featured');
function autoset_featured() {
global $post;
// check for a post thumbnail
if( has_post_thumbnail( $post->ID ) )
return;
$attached_image = get_children([
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image',
'numberposts' => 1,
'order' => 'ASC',
]);
// make a condition to check for a picture
if($attached_image) {
foreach( $attached_image as $attachment_id => $attachment ){
set_post_thumbnail($post->ID, $attachment_id);
}
}
}
список змін
| З версії 3.1.0 | Введено. |
Код set_post_thumbnail() set post thumbnail WP 6.0.2
function set_post_thumbnail( $post, $thumbnail_id ) {
$post = get_post($post);
$thumbnail_id = absint($thumbnail_id);
if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
if ( wp_get_attachment_image( $thumbnail_id, 'thumbnail' ) ) {
return update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
} else {
return delete_post_meta( $post->ID, '_thumbnail_id' );
}
}
return false;
}