欢迎访问艾立兹站 Aliz- 专注建站教程与技术分享
您当前的位置:首页 > 建站教程 > WordPress 建站

WordPress 调用特色图片生成缩略图完整方案|无图默认图、自定义尺寸、列表模板代码

时间:2026-07-21 21:32:25  来源:aliz.cn  作者:SKY  阅读:

WordPress 调用特色图片生成缩略图完整方案

一、前置开启特色图片功能

很多主题默认关闭文章特色图片支持,首先在主题 functions.php开启支持:

// 开启特色图片支持
add_theme_support( 'post-thumbnails' );

// 可选:自定义新增缩略图尺寸(名称,宽,高,是否强制裁剪true/false)
add_image_size( 'list-thumb', 320, 180, true );
add_image_size( 'home-thumb', 420, 240, true );

代码放入 functions.php,新增尺寸后,旧图片需要使用「重新生成缩略图」插件生成对应尺寸

参数说明: true = 居中强制裁剪(无黑边,适合列表封面) false = 等比例缩放,不裁切

二、基础调用语法(循环内使用,index.php/archive.php/home.php)

1. 最简调用(自动使用主题默认缩略图尺寸)

<?php if ( has_post_thumbnail() ) : ?>
    <?php the_post_thumbnail(); ?>
<?php endif; ?>

2. 指定自定义尺寸(推荐,统一列表封面大小)

<?php if ( has_post_thumbnail() ) : ?>
    <a href="<?php the_permalink(); ?>">
        <?php the_post_thumbnail('list-thumb', ['alt' => get_the_title()]); ?>
    </a>
<?php endif; ?>

三、进阶:无特色图片时显示默认占位图(高频需求)

方案 1:模板内直接判断(最常用)

<?php
if ( has_post_thumbnail() ) {
    // 存在特色图片
    the_post_thumbnail('list-thumb', ['alt' => get_the_title()]);
} else {
    // 无图输出默认缩略图
    echo '<img src="'.get_template_directory_uri().'/skin/images/nopic.jpg" alt="默认图片">';
}
?>

方案 2:封装函数,全局复用(推荐写到 functions.php)

/**
 * 获取文章缩略图,无图返回默认图
 * @param string $size 图片尺寸标识
 */
function aliz_get_post_thumb($size = 'list-thumb'){
    if( has_post_thumbnail() ){
        return get_the_post_thumbnail(get_the_ID(), $size, ['alt' => get_the_title()]);
    }else{
        $default_img = get_template_directory_uri().'/skin/images/nopic.jpg';
        return '<img src="'.$default_img.'" alt="默认封面">';
    }
}

模板调用方式:

<?php echo aliz_get_post_thumb('list-thumb'); ?>

四、只获取图片地址,自由拼接 HTML(高度自定义场景)

the_post_thumbnail() 直接输出完整<img>标签;如果你只想拿到图片 URL 自行布局:

<?php
if( has_post_thumbnail() ){
    $thumb_url = get_the_post_thumbnail_url(get_the_ID(),'list-thumb');
}else{
    $thumb_url = get_template_directory_uri().'/skin/images/nopic.jpg';
}
?>
<a href="<?php the_permalink(); ?>">
    <img src="<?php echo $thumb_url; ?>" alt="<?php the_title(); ?>">
</a>

五、常用循环完整示例(首页列表模板标准代码)

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="item">
    <?php
    if( has_post_thumbnail() ){
        $imgurl = get_the_post_thumbnail_url(get_the_ID(),'list-thumb');
    }else{
        $imgurl = get_template_directory_uri().'/skin/nopic.jpg';
    }
    ?>
    <a href="<?php the_permalink(); ?>">
        <img src="<?php echo $imgurl; ?>" alt="<?php the_title(); ?>">
    </a>
    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    <p><?php echo wp_trim_words(get_the_excerpt(),18); ?></p>
</div>
<?php endwhile; endif; ?>

六、关键函数对照表

表格

函数 作用
has_post_thumbnail() 判断文章是否存在特色图片
the_post_thumbnail($size,$attr) 直接输出 img 标签
get_the_post_thumbnail_url(ID,size) 获取缩略图 URL 地址
get_the_post_thumbnail() 获取完整 img 字符串,不直接输出

七、常见踩坑问题

1、新增图片尺寸,旧文章不生成缩略图

WP 不会自动对旧图片生成新尺寸,安装插件:Regenerate Thumbnails,一键重建。

2、特色图片不裁剪,留白很大

添加尺寸时第三个参数设置为 true

add_image_size( 'list-thumb', 320, 180, true );

3、CDN 站点图片路径不对

不要硬编码域名,统一使用 get_template_directory_uri()wp_get_attachment_image_src(),WP 自动适配站点域名。

4、alt 为空,不利于 SEO

调用时手动传入 alt 标题,不要使用系统默认空 alt。

八、拓展:获取特色图片原图地址

<?php
$full_img = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
if($full_img){
    echo $full_img[0]; //原图url
}
?>

总结

  1. add_theme_support( 'post-thumbnails' ); 开启功能;
  2. has_post_thumbnail() 判断是否存在封面;
  3. the_post_thumbnail() 快速输出,get_the_post_thumbnail_url() 获取图片链接自由布局;
  4. 封装函数统一处理「无图默认占位图」,减少模板重复代码。

本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载

发表评论 共有0条评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
公众号二维码

扫码关注公众号
获取全套技术教程