set_post_thumbnail

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

Хуков нет.

Возвращает

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

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

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

Примеры

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

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

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

Код из


wp-includes/post.php

WP 4.7.2

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

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *