特色图像:Featured Image
WordPress与附件相关的函数很多,特色图像也是附件,但它与文章一一对应,代表了文章,使用更加广泛。了解获取特色图像的各种方法,对写主题十分有帮助。
WordPress的特色图像是一张可以代表文章或页面的的图片,用法也很简单,两句话搞定。
if( has_post_thumbnail() ){
the_post_thumbnail();
}
但简单的代价就是局限性高一些,比如产生的img标签class是什么,调用了多大尺寸的图片?
第二个问题比较容易回答,默认的图片尺寸是post-thumbnail,这是一个特殊的尺寸,需要在主题的functions.php里初始化一下。
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 400, 300, true );
调用特色图像的其它尺寸只需把名称传给the_post_thumbnail(),例如调用large的特色图像。
the_post_thumbnail( 'large' );
给特色图像增加自定义class
这要用到the_post_thumbnail()的第二个参数,直接看代码。
if( has_post_thumbnail() ){
$attr = array(
'class' => "my-custom-class",
'alt' => "my alt text"
);
the_post_thumbnail( 'post-thumbnail', $attr );
}
【注意】 注意class是追加,而alt则是覆盖。
指定post ID获取特色图像
the_post_thumbnail()的一个局限性是只能在循环中使用,不能自由指定文章。打破局限性的方法如下
echo get_the_post_thumbnail( $post_id, 'post-thumbnail', $attr );
另外,the_post_thumbnail()只能输出img标签,在lightbox或slideshow里,我们需要这样的结构
<li>
<a href="http://yoursite.com/image.jpg">
<img src="http://yoursite.com/image-thumb.jpg">
</a>
</li>
一张大图给访客看,一张小图当缩略图导航,直接获取图片地址比较方便。
获取特色图像的地址
特色图像或者任何一张媒体库里的图片都是类型为attachment的post,要想控制它就得知道ID。常见的应用场景是获取某篇文章的特色图像,所以就用文章ID找它的 ID。
获取特色图像ID
$post_thumbnail_id = get_post_thumbnail_id( $post_id );
获取缩略图地址
wp_get_attachment_thumb_url( $post_thumbnail_id );
获取原图地址
wp_get_attachment_url( $post_thumbnail_id );
获取任意尺寸
$image = wp_get_attachment_image_src( $post_thumbnail_id, 'post-thumbnail' );
$src = $image[0];
这个函数看名字好像是返回个图片源地址,其实它返回了一个数组,包含图片的地址和宽高,于是…
获取任意尺寸及其宽高信息
$image = wp_get_attachment_image_src( $post_thumbnail_id, 'post-thumbnail' );
list($src, $width, $height) = $image;
于是上面的html代码可以变成这样:
<li>
<a href="<?php echo wp_get_attachment_url( $post_thumbnail_id ); ?>">
<img src="<?php echo wp_get_attachment_thumb_url( $post_thumbnail_id ); ?>">
</a>
</li>