导读:WordPress Media 一直支持上传图片生成包括缩略图, 中等尺寸, 大尺寸和原图 4 个规格的图片, 而这恐怕是为了方便我们在文章内调用不同尺寸的图片...

WordPress Media 一直支持上传图片生成包括缩略图, 中等尺寸, 大尺寸和原图 4 个规格的图片, 而这恐怕是为了方便我们在文章内调用不同尺寸的图片.

凭文章 ID 就可以找到第一个图片, 这里可以写成方法如下, 用户获取第一个缩略图, 如果没有上传过图片, 返回空字符串.

以下代码贴入主题的 function.php 文件:

  1. add_theme_support( 'post-thumbnails' ); 
  2. set_post_thumbnail_size( 140, 98 ,true );
  3. function dm_the_thumbnail() { 
  4.     global $post
  5.     
  6.     if ( has_post_thumbnail() ) { 
  7.         echo '<a href="'.get_permalink().'">'
  8.         the_post_thumbnail(); 
  9.         echo '</a>'
  10.     } else { 
  11.         $content = $post->post_content; 
  12.         preg_match_all('/<img.*?(?: | |
    |
    )?src=['
    "]?(.+?)['"]?(?:(?: | |
    |
    )+.*?)?>/sim', $content$strResult, PREG_PATTERN_ORDER); 
  13.         $n = count($strResult[1]); 
  14.         if($n > 0){ 
  15.             echo '<a href="'.get_permalink().'"><img src="'.$strResult[1][0].'" /></a>'
  16.         }else { 
  17.             echo '<a href="'.get_permalink().'"><img src="'.get_bloginfo('template_url').'/img/thumbnail.jpg" /></a>'
  18.         } 
  19.     } 

代码注释相当详细了, 这里不过多说明, 添加新文章的时候, 右侧有个设置缩略图, 这样就行了.

方法二, 代码如下:

  1. function getFirstImage($postId) { 
  2.  $args = array
  3.   'numberposts' => 1, 
  4.   'order'=> 'ASC'
  5.   'post_mime_type' => 'image'
  6.   'post_parent' => $postId
  7.   'post_status' => null, 
  8.   'post_type' => 'attachment'
  9.  ); 
  10.  $attachments = get_children($args); 
  11.  
  12.  if(!$attachments) { 
  13.   return ''
  14.  } 
  15.  
  16.  $image = array_pop($attachments); 
  17.  $imageSrc = wp_get_attachment_image_src($image->ID, 'thumbnail'); 
  18.  $imageUrl = $imageSrc[0]; 
  19.  $html = '<img src="' . $imageUrl . '" alt="' . the_title('''', false) . '" />'
  20.  return $html

调用的代码如下:

  1. $thumb = getFirstImage($post->ID); 
  2. if(strlen($thumb) > 0) { 
  3.  echo $thumb
  4. else { 
  5.  

文章特征图片 (Featured Image) 功能

WordPress 2.9 之后,WordPress 提供了文章特征图片功能, 可以为文章设定一个上传的图片作为特征图片, 并可以给图片设定多个尺寸以便在不同的环境使用, 可按一下步骤调用:

1. 为 WordPress 主题添加特征图片支持, 并设定特征图片的尺寸和别名, 代码如下:

  1. PHPadd_theme_support('post-thumbnails'); 
  2. add_image_size('thumb', 180, 180); 
  3. add_image_size('recommend', 120, 120); 
  4. add_theme_support('post-thumbnails'); 
  5. add_image_size('thumb', 180, 180); 
  6. add_image_size('recommend', 120, 120); 

我们可以将以上代码加到 functions.php 文件, 为主题添加添加了 Featured Image 支持, 并设定了 180x180 和 120x120 两种尺寸的图片.

其中 add_image_size 用于定义一种特征图片尺寸, 参考 WordPress Codex, 实际上它有 4 个参数.

第 1 个参数: 特征图片的尺寸别名, 用于调用不同尺寸的缩略图。

第 2 个参数: 图片的宽度

第 3 个参数: 图片的高度

第 4 个参数: 参数是个布尔值, 用于指定图片的裁切方式, 默认为 false.

如果为 true, 图片会按较大的压缩比例处理, 多余部分裁剪掉, 比如现在有图片 900x600, 要求压缩成 150x150 的图片, 那么会先将图片压缩成 225x150 的图片, 才裁剪成 150x150.

如果为 false, 图片会按较小的压缩比例处理, 比如现在有图片 900x600, 要求压缩成 150x150 的图片, 那么会将图片压缩成 150x100 的图片.

下图是两个缩略图, 原图 1024x768, 左缩略图是 add_image_size('xxx', 120, 120, true);, 而右图使用的是 add_image_size('xxx', 120, 120, false);.