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

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

Теперь эту картинку можно использовать в теме вордпресс с помощью функции the_post_thumbnail():
add_theme_support( ‘post-thumbnails’ );
Но что если мы хотим показать не только картинку, но и ее заголовок, который можно задать при загрузке или же в «Библиотеке файлов» (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; ?>
И получим, в конечном итоге, картинку и под ней ее заголовок.
