不知道博主们在更新博文时会不会忘记上传文章缩略图呢?反正我是经常会忘记的。
每篇文章都要手动上传缩略图实在是太麻烦了,因此悟空搜干脆在首页和列表页自动调用文章内第一张图片作为缩略图,如果文章内没有图片则会显示默认缩略图。
这种方法的确很省事,但是这样就会大量重复显示一张默认缩略图,很影响用户体验。于是悟空搜又找到另一种方法:文章显示随机缩略图。功能代码如下:
// 支持外链缩略图
if ( function_exists('add_theme_support') ) {
add_theme_support('post-thumbnails');
}
function catch_first_image() {
global $post, $posts;
$first_img = '';
// 从文章内容中匹配第一张图片
$output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
if (!empty($matches[1][0])) {
$first_img = $matches[1][0];
// 判断图片是否过小(可选)
$image_size = @getimagesize($first_img);
if ($image_size && $image_size[0] < 50) {
$first_img = ''; // 图片过小,视为无效
}
}
// 如果第一张图不存在或过小,则返回随机图片
if (empty($first_img)) {
// 从 N 张图中随机选择,请根据你的图片数量修改 mt_rand(1, N) 中的 N
$random = mt_rand(1, 2);
$first_img = get_stylesheet_directory_uri() . '/images/random/' . $random . '.jpg';
}
return $first_img;
}
上面代码可以实现文章缩略图随机显示图片,这样就不会始终调用单一的默认缩略图了。
使用方法
1. 复制上面修正后的代码,粘贴到主题的 functions.php 文件中。
2. 在你的主题目录下(例如 /wp-content/themes/your-theme/)新建 /images/random/ 目录,并上传一些你喜欢的图片。将图片重命名为 1.jpg, 2.jpg, 3.jpg...(数量可以任意,但需要与代码中的 mt_rand(1, N) 范围匹配)。
3. 在主题模板中需要显示缩略图的地方(例如 index.php, archive.php 或 single.php),加入以下代码:
<?php echo catch_first_image(); ?>
这样,当文章没有特色图片或内容图片时,就会随机显示你预设的图片作为缩略图,从而提升页面的视觉效果和用户体验。