/ Featured Image

WP每篇文章头部显示不同图片

WordPress从2.9开始引入Post Thumbnail这个以往要通过自定义域实现的功能,3.0中改为Featured Image,但是模板标签仍然沿用2.9。WordPress 3.0新的默认主题twentyten中也使用缩略图,只不过不是显示在文章里,而是作为顶部图片。如果没有选择大于940px×198px的图片作为缩略图的话,很不容易发现这个功能。

来看functions.php中这两处代码,第一处是激活缩略图功能,第二处则是设置缩略图大小。我们可以看到,缩略图的大小正好为头部图片的大小,看注释:将使用缩略图作为文章和页面的自定义顶部图片,前提所选择的图片必须宽于940px、高于198px,这样才能裁切成940px×198px的缩略图。

[php]
// This theme uses post thumbnails
add_theme_support( 'post-thumbnails' );
[/php]

[php]
// The height and width of your custom header. You can hook into the theme's own filters to change these values.
// Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values.
define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) );
define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) );

// We'll be using post thumbnails for custom header images on posts and pages.
// We want them to be 940 pixels wide by 198 pixels tall.
// Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
[/php]

在主题header.php文件中我们可以看到,只有缩略图的宽带大于等于funtions.php中定义常量的大小,头部才会显示文章缩略图,否则显示主题设置的图片。

[php]
<?php
// Check if this is a post or page, if it has a thumbnail, and if it's a big one
if ( is_singular() && has_post_thumbnail( $post->ID ) &&
( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
$image[1] >= HEADER_IMAGE_WIDTH ) :
// Houston, we have a new header image!
echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
else : ?>
<img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
<?php endif; ?>
[/php]

[caption id="attachment_52" align="aligncenter" width="600" caption="使用WP文章缩略图做头部图片"]使用WP文章缩略图做头部图片[/caption]

所以,如果想每篇文章顶部的图片都不一样,那记得选一张够大的图片作为缩略图(特色图片),既保持默认主题的简洁大方,又增添了一些趣味。当然也可以把这一功能延伸到别的主题中去,稍后我将翻译一篇WordPress开发人员撰写的关于缩略图使用的文章。