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