WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

set_post_thumbnail() WP 3.1.0

Устанавливает миниатюру записи по переданным ID записи и ID вложения (медиафайла). Если указанного вложения нет в базе данных, то функция удалит миниатюру записи.

Работает на основе: update_post_meta(), delete_post_meta()

Хуков нет.

Возвращает

Число/false.

  • Число ID вставленной строки метаданных.
  • false, если не удалось вставить данные.

Использование

set_post_thumbnail( $post, $thumbnail_id );
$post(число/объект) (обязательный)
ID записи, которой нужно установить миниатюру. Можно передать объект записи.
$thumbnail_id(число) (обязательный)
ID вложения которое нужно прикрепить.

Примеры

#1 Установим миниатюру записи

Допустим нам нужно установить миниатюру записи 56. ID медиафайла (вложения) нам известен и равен 89:

if( set_post_thumbnail( 56, 89 ) )
	echo 'Миниатюра установлена.';
else
	echo 'Миниатюра удалена.';

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

	// проверка на наличие миниатюры посте
	if( has_post_thumbnail($post->ID) )
		return;

	$attached_image = get_children( array(
		'post_parent'=>$post->ID, 'post_type'=>'attachment', 'post_mime_type'=>'image', 'numberposts'=>1, 'order'=>'ASC'
	) );

	// делаем условие проверку на наличие картинки
	if( $attached_image ){
		foreach ($attached_image as $attachment_id => $attachment)
			set_post_thumbnail($post->ID, $attachment_id);
	}
}

Список изменений

С версии 3.1.0 Введена.

Код set_post_thumbnail() WP 5.6

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

Из метки: thumbnail (image картинки-миниатюры)

Еще из раздела: Миниатюры

3 коммента
    Войти