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

Как автоматически устанавливать миниатюру записи | n-wp.ru
Способ автоматической установки миниатюры записи - при сохранении выбирается первое или последнее изображение. Способ подстраховывает, если автор забыл указать миниатюру поста, и берет на себя рутинную работу при публикации в фотоблоге.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

Как автоматически устанавливать миниатюру записи (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. Этот способ автоматической установки миниатюры записи имеет и еще одно прикладное значение – если автор забыл установить миниатюру записи, то функция сделает это за него.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

×
WordPress:
прокачай свой сайт!

Скидка на премиум темы и плагины

Успей забрать скидку ⋙