wordpress缩略图调用,没有缩略图则提前第一张,否则显示随机图片

wordpress自带缩略图标签为:

<?php the_post_thumbnail(); ?>

但是这仅支持设置过特色图像的文章,如果文章没有设置过特色图像,或者文章中根本不存在图片的情况怎么处理呢?

第一步:

修改主题目录下的functions.php文件,插入

// 自动缩略图
function catch_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //定义一张默认缩略图
        $random = mt_rand(1, 10);
        echo 'http://img.el0310.com/files/images/thumbnail'.$random.'.jpg';
  }
  return $first_img;
}

第二步:

在需要显示缩略图的地方插入

<?php if (has_post_thumbnail()) { the_post_thumbnail('thumbnail', array('alt' => get_the_title()));
} else { ?>
<img src="<?php echo catch_image() ?>!200X150" alt="<?php the_title(); ?>" />
<?php } ?>



如果页面模板中经常需要插入缩略图,觉得上面第二步的代码太长。

可以在主题目录下新建 inc目录,在此目录下增加thumbnail.php.内容为:

<?php if (has_post_thumbnail()) { the_post_thumbnail('thumbnail', array('alt' => get_the_title()));
} else { ?>
<img src="<?php echo catch_image() ?>!200X150" alt="<?php the_title(); ?>" />
<?php } ?>


然后,在需要插入缩略图的地方调用此文件即可,调用方法为:

<?php get_template_part( 'inc/thumbnail' ); ?>