Как в WordPress показать заголовок изображения с помощью функции the_post_thumbnail

Начиная с версии 2.9, в ВордПресс (WordPress) ввели очень полезную функцию называемую «Миниатюра записи» (Featured Image), которая позволяет привязать к каждой записи или страницы изображение. Чтобы использовать эту функцию, ее сначала нужно активировать. Для этого в файл functions.php вашей WordPress темы, нужно добавить следующую запись:

add_theme_support( 'post-thumbnails' );

После этого в админке вордпресса появится следующий блок:

Featured-image---Display-image-caption-1

И можно назначать для записей и страниц изображение:

Featured-image---Display-image-caption-2

Теперь эту картинку можно использовать в теме вордпресс с помощью функции the_post_thumbnail():

<?php the_post_thumbnail(); ?>

Но что если мы хотим показать не только картинку, но и ее заголовок, который можно задать при загрузке или же в «Библиотеке файлов» (Media Library) в админке вордпресс (WordPress)? Оказывается the_post_thumbnail() этого делать не умеет, а другой функции для этого в вордпресс (WordPress) не существует (на момент создания данной записи). К счастью эта проблема решается достаточно просто и всего лишь несколько строк в файле functions.php помогут это сделать.

function the_post_thumbnail_caption() {
	global $post;

	$thumbnail_id    = get_post_thumbnail_id($post->ID);
	$thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment'));

	if ($thumbnail_image && isset($thumbnail_image[0])) {
		echo '<span>'.$thumbnail_image[0]->post_excerpt.'</span>';
		}
	}

Мы создали новую функцию the_post_thumbnail_caption() которая и будет выводить заголовок изображения в вордпресс тему.

Как функцию the_post_thumbnail, так и the_post_thumbnail_caption следует использовать в цикле WordPress (the loop). Например, как-то так:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<article class="single">
	<div class="date"><?php the_date('M j Y', '', ''); ?></div>
	<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title();?></a></h1>
		<?php if (  has_post_thumbnail()  )  {
			echo '<div class="thumb">';
			the_post_thumbnail();
			the_post_thumbnail_caption();
			echo '</div>';
			} ?>
	<div class="author">By <?php the_author_posts_link(); ?></div>
	<?php the_content( 'more...' ); ?>
</article>
<?php endwhile; ?>
<?php endif; ?>

И получим, в конечном итоге, картинку и под ней ее заголовок.

Featured-image---Display-image-caption-3


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