在使用WordPress建设网站的过程中,我们经常需要显示文章的缩略图。WordPress 缩略图的实现主要靠两种方式,第一种是读取WordPress文章中的第一张图片来作为缩略图的图源,第二种是读取文章特色图标来作为缩略图的图源。今天我们将这两种方式结合起来实现 WordPress 缩略图。
实现原理如下:
一、判断文章是否已经设置特色图片,如果设置了,则获取特色图片来作为文章缩略图的图源。
二、判断文章中是否存在图片(正则表达式),如果存在图片,则获取文章中第一张图片来来作为文章缩略图的图源。
三、如果文章中既没有设置特色图片,也不存在图片,则显示一张默认的图片。
实现方法如下:
1. 切换到主题目录,打开functions.php文件,加入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php //缩略图 add_theme_support( 'post-thumbnails' ); function post_thumbnail( $width = 255,$height = 130 ){ global $post; if( has_post_thumbnail() ){ $timthumb_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID),'full'); $post_timthumb = '<img src="'.get_bloginfo("template_url").'/timthumb.php?src='.$timthumb_src[0].'&h='.$height.'&w='.$width.'&zc=1" alt="'.$post->post_title.'" class="thumb" title="'.get_the_title().'"/>'; echo $post_timthumb; } else { $content = $post->post_content; $defaltthubmnail = sapphire('default-thumb') ? sapphire('default-thumb') : get_template_directory_uri().'/img/no-thumb.png'; preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER); $n = count($strResult[1]); if($n > 0){ echo '<img src="'.get_bloginfo("template_url").'/timthumb.php?w='.$width.'&h='.$height.'&src='.$strResult[1][0].'" title="'.get_the_title().'" alt="'.get_the_title().'"/>'; } else { echo '<img src="'.get_bloginfo("template_url").'/timthumb.php?w='.$width.'&h='.$height.'&src='.$defaltthubmnail.'" title="'.get_the_title().'" alt="'.get_the_title().'"/>'; } } } ?> |
注:此处需要用到一个裁剪缩略图的PHP文件,点击下面的链接下载
[dl href=’http://pan.baidu.com/s/1jGgyQ6y’]点击下载[/dl]
2. 在需要显示文章缩略图的地方,添加以下代码:
1 | <?php post_thumbnail(145,145) ?> |