博客首页显示的文章图片是特色图像,如果需要显示特定的图片,需要在添加文章时单独设置,而一般情况下,我们不可能为每篇文章都设置特色图像。也因此,出现了两种比较流行的设置特色图像的简便方法:第一种是假如没有手动设置特色图像就自动设置文章里出现的第一张图片为特色图像,第二种是假如没有手动设置特色图像就设置一张默认的图片为特色图像。也有两者的结合,通过条件语句,如果有图片就第一种,如果没有图片就第二种。
我是不太喜欢第一种,毕竟,并不是所有的第一张图片都适合作为特色图像。而第二种也有问题,假如没有图片的文章较多,则显示的特色图像就都是一样的。我需要的是假如不手动设置特色图像则在准备好的多张图片中随机显示一张,如果稍微多准备一点特色图片,那么重复的可能性就会低。
这种方法网上并不多见,完整代码如下:
/** * 为没有设置缩略图的文章随机显示缩略图 */ if ( function_exists('add_theme_support') )add_theme_support('post-thumbnails'); //让你的主题开启特色图像功能 function post_thumbnail_src(){ global $post; if( $values = get_post_custom_values("thumb") ) {//输出自定义域图片地址 $values = get_post_custom_values("thumb"); $post_thumbnail_src = $values [0]; } elseif( has_post_thumbnail() ){//如果有特色缩略图,则输出缩略图地址 $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'thumbnail'); //其中full可以修改的,可以为thumbnail, medium, large or full(分别代表最小的缩略图、中等、大和原始尺寸) $post_thumbnail_src = $thumbnail_src [0]; } else {//如果没有设置特色缩略图,则输出第一张图片为特色缩略图 $post_thumbnail_src = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $post_thumbnail_src = $matches [1] [0]; //获取该图片 src if(empty($post_thumbnail_src)){ //如果日志中没有图片,则显示随机图片 $random = mt_rand(1, 10);//根据实际准备的图片数量修改 echo get_bloginfo('template_url'); echo '/images/pic/'.$random.'.jpg';//根据实际情况修改图片路径 //如果日志中没有图片,则显示默认图片。我用的是随机显示,所以把下面一行的方法注释掉了 //echo '/images/default_thumb.jpg'; } }; echo $post_thumbnail_src; }
逻辑是如果设置了特色图像则输出特色图像,如果没有设置特色图像则设置第一张图片为特色图像,如果文章连图片也没有,则显示随机图像为特色图像或者显示一张默认图片为特色图像(二选一)。
之前说了,并不是所有的第一张图片都适合作为特色图像,所以,我用的逻辑是:如果设置了特色图像则输出特色图像,如果没有设置,则显示随机图像为特色图像。把代码中的这段去掉就可以了。
$post_thumbnail_src = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $post_thumbnail_src = $matches [1] [0]; //获取该图片 src
然后在需要的地方调用即可:
<img src="<?post_thumbnail_src(); ?>" alt="<?php the_title(); ?>" />
最后这段代码的调用应该放在哪里啊?
@双双对对爸爸 放在content.php里替换原来的既可以了
博主一天更新了很多篇文章啊
@两对半 严格来说,只更新了一篇。其余的都是以前博客复制过来的。
连博客名称也改了,这次变动很大哈。
@博客志 还叫从良未遂
@从良未遂 好吧,差点在我的站点把你博客名称给改了,那还是维持原状吧。
收藏
这是博客重新来了??= = 话说我也在RSS里看到10条。。。
随机这个,如果图片是10个,文章10个,很容易重复的。。
所以建议图片至少50+。
当然了,我自己博客的就是10个,因为第一篇没有配图,那就是第一张,以此类推~~= =
@姜辰 是的。推翻重来了
@从良未遂 重来之后还是从良未遂啊
@姜辰 男人嘛,就该始终如一。
RSS铺天盖地,这是博客重建了的意思?
@神父 什么鬼?我不是禁用feed了吗?怎么你还能收到?
@从良未遂 什么鬼,瞬间来了10条更新
@神父 哈哈,都是以前的,结束了。后面都是一篇篇来了。
@神父 你那网站搞什么鬼,现在一点个性都没有
@从良未遂 风声太紧,收敛点。