让WordPress缩略图特色图片随机显示

2019年3月18日 0 作者 折情tim

最近在站点主题更新的时候,由于模板和插件过多总会经常性的忘记设置热点图片,一单忘记设置热点图片就会整个页面特别的丑,想了很多办法最后才算是搞定了。设置完毕后就算忘记设置了特色图片系统也会随机显示一张图片。

编辑主题文件,在主题的functions.php中加入以下代码

//支持外链缩略图
if ( function_exists('add_theme_support') )
 add_theme_support('post-thumbnails'); // 若有错误删掉上面两行
function catch_first_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))
  {
    $image_size = getimagesize($first_img);
    $image_width = $image_size[0];
  }
  //如果第一张图不存在或过小,则返回随机图片           可乐补充如果不需要默认第一张图的话把上面的代码以及if都去掉即可
  if(empty($first_img) || $image_width<50){
    $first_img = '';
    //从2张图中随机选择,可根据自己的图片数量设置
    $random = mt_rand(1, 2);
    echo get_bloginfo ( 'stylesheet_directory' );
    echo '/images/random/'.$random.'.jpg';
    }
  return $first_img;
}

在主题中新建/images/random/目录,找一些自己拍的图片放进去。将他们重命名为1..2…3..4..5.jpg

打开主题目录下content.php,将原主题的特色图像代码换成下面的

<!--裁切高大于宽的图片-->
<div  style="overflow:hidden;width:100%;max-height:100px;">
<img src='<?php echo catch_first_image(); ?>' />
</div>
如果没有跳转文章链接用下面的代码
function catch_rand_image() {
  global $post, $posts;$imgg_url;
  ob_start();
  ob_end_clean();
    $random = mt_rand(1, 63);
    $imgg_url = 'https://xxx/images/random/'.$random.'.jpg';
    echo '<a href="'.get_permalink().'" target="_blank" rel="external nofollow" ><img src="'.$imgg_url.'" /></a>';
}

content.php:

<?php echo catch_rand_image(); ?>
不要忘记修改rand里的值要不然只会选择1.jpg和2.jpg