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>
结语
WordPress有关图片附件的函数很多,具体可以看之前的一篇文章《WordPress附件函数总结》。函数太多反而不知道用哪个好了,所以写了这篇比较注重实战的文章,简单有效的解决问题。