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; }