set_post_thumbnail() WP 3.1.0

Встановлює мініатюру запису за переданими ID запису та ID вкладення (медіафайл). Якщо вказаного вкладення немає у базі даних, то функція видаляє мініатюру запису.

Працює на основі:
update_post_meta() ,
delete_post_meta()

Хуків немає.

Повертає

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 вкладення, яке потрібно прикріпити.

Приклади

0

#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.';
0

#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() 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *