Как автоматически устанавливать миниатюру записи

Как автоматически устанавливать миниатюру записи | n-wp.ru

Я, создавая фотоблог, поставил себе целью максимально упростить процесс добавления записей, автоматизировать операции, на которые обычно тратится много времени. Одной из таких операций является указание миниатюры записи. Обычно я сначала добавляю в пост изображения, потом из них выбираю то, которое будет миниатюрой этой записи.

Как автоматически устанавливать миниатюру записи (1)

Если в день публикуется много постов, то в каждом из них указывать миниатюру записи бывает утомительно, тем более что обычно миниатюрой записи служит первое из добавляемых изображений. Если вы придерживаетесь такого же принципа указания миниатюры записи, то эту операцию можно автоматизировать – создать функцию, которая бы при сохранении поста автоматически делала бы миниатюрой записи первое из изображений.

Первым я имею ввиду то изображение, которое определено первым в списке.

Как автоматически устанавливать миниатюру записи (2)

В файл functions.php нужно вставить следующий код:

! defined( 'ABSPATH' ) and exit;

if ( ! function_exists( 'fb_set_featured_image' ) ) {
	
	add_action( 'save_post', 'fb_set_featured_image' );

	function fb_set_featured_image() {
			
			if ( ! isset( $GLOBALS['post']->ID ) )
				return NULL;
				
			if ( has_post_thumbnail( get_the_ID() ) )
				return NULL;
			
			$args = array(
				'numberposts'    => 1,
				'order'          => 'ASC', 
				'post_mime_type' => 'image',
				'post_parent'    => get_the_ID(),
				'post_status'    => NULL,
				'post_type'      => 'attachment'
			);
			
			$attached_image = get_children( $args );
			if ( $attached_image ) {
				foreach ( $attached_image as $attachment_id => $attachment )
					set_post_thumbnail( get_the_ID(), $attachment_id );
			}
			
	}
	
}

if ( ! function_exists( 'fb_add_thumb_column' ) ) {
	
	add_filter( 'manage_posts_columns', 'fb_add_thumb_column' );
	add_action( 'manage_posts_custom_column', 'fb_add_thumb_value', 10, 2 );

	add_filter( 'manage_pages_columns', 'fb_add_thumb_column' );
	add_action( 'manage_pages_custom_column', 'fb_add_thumb_value', 10, 2 );

	function fb_add_thumb_column( $cols ) {
		
		$cols['thumbnail'] = __('Thumbnail');
		return $cols;
	}
	
	function fb_add_thumb_value( $column_name, $post_id ) {
			
		if ( 'thumbnail' !== $column_name )
			return;
		
		$width  = (int) 35;
		$height = (int) 35;
		
		$args = array(
			'numberposts'    => 1,
			'order'          => 'ASC', 
			'post_mime_type' => 'image',
			'post_parent'    => get_the_ID(),
			'post_status'    => NULL,
			'post_type'      => 'attachment'
		);
		
		$attached_image = get_children( $args );
		
		if ( $attached_image ) {
			foreach ( $attached_image as $attachment_id => $attachment )
				echo wp_get_attachment_image( $attachment_id, array( $width, $height ), TRUE );
		} else {
			echo __( 'None' );
		}
		
	}

}

Если вы хотите, чтобы миниатюрой записи автоматически устанавливалось последнее изображение, то замени в коде ASC на DESC. Этот способ автоматической установки миниатюры записи имеет и еще одно прикладное значение – если автор забыл установить миниатюру записи, то функция сделает это за него.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

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

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

Ваш электронный адрес не будет опубликован.


*