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

WordPress调用文章特色图片(缩略图)完整实操教程

时间:2026-08-13 22:36:16  来源:aliz.cn  作者:SKY  阅读:

WordPress 调用文章特色图片(缩略图)完整实操教程

原创实测,适用于 WordPress5.x‑6.x 版本。 WordPress 特色图片(Featured Image)是文章内置缩略图字段,后台编辑文章可以直接上传设置。很多主题二次开发时,经常遇到:调不出图片、尺寸不对、没有特色图片时空白、前台不显示等问题。本文整理全套调用代码。

一、前置条件:主题开启特色图片支持


如果你的主题没有开启特色图片,文章后台不会出现「特色图片」设置框。 打开主题 functions.php,加入代码开启支持:
php
运行
//开启特色图片支持
add_theme_support( 'post-thumbnails' );

//自定义缩略图尺寸,名称:custom‑thumb,宽400,高260,true=强制裁剪
add_image_size( 'custom‑thumb', 400, 260, true );

保存后,后台文章编辑页面就会出现【设置特色图片】。
注意:旧上传图片不会自动生成新尺寸,需要安装插件「Regenerate Thumbnails」批量重生成缩略图。

二、基础调用方式(循环内使用,WP_Query /while 循环里面)

1、直接输出完整 img 标签(最简单)


php
运行
<?php if ( has_post_thumbnail() ) : ?>
    <?php the_post_thumbnail('custom‑thumb', ['class'=>'thumb-img','alt'=>get_the_title()]); ?>
<?php endif; ?>

参数说明:
  • custom‑thumb:图片尺寸名称,可以用系统自带:thumbnail(150x150)、mediumlargefull原图
  • class:给图片加 css 类,方便写样式
  • alt:alt 属性用文章标题,利于 SEO

2、只获取图片 HTML 字符串,不直接输出


php
运行
<?php
if(has_post_thumbnail()){
    $thumb_html = get_the_post_thumbnail(get_the_ID(),'custom‑thumb',['class'=>'thumb-img']);
    echo $thumb_html;
}
?>

3、只拿图片地址 url(常用于 a 标签背景图)


php
运行
<?php
if(has_post_thumbnail()){
    $thumb_url = get_the_post_thumbnail_url(get_the_ID(),'custom‑thumb');
}
?>

<!-- 使用示例 -->
<div style="background:url(<?php echo $thumb_url;?>) no-repeat center;background‑size:cover;"></div>

三、无特色图片时输出默认占位图(高频需求)


列表页很多文章没有设置特色图片,不要空白,给一张默认图。

方案 A:在循环内完整示例(直接复制)


php
运行
<?php
$default_img = get_template_directory_uri().'/images/default‑thumb.jpg';//主题目录默认图
if ( has_post_thumbnail() ) {
    echo get_the_post_thumbnail( get_the_ID(), 'custom‑thumb', array( 'class' => 'thumb-img' ) );
} else {
    echo '<img src="'.$default_img.'" class="thumb-img" alt="'.esc_attr(get_the_title()).'">';
}
?>
把默认图片放到主题文件夹 images/default‑thumb.jpg

方案 B:封装函数放到 functions.php,模板一行调用(推荐)


php
运行
/**
 * aliz.cn 获取文章缩略图,无图返回默认图
 * @param string $size 图片尺寸
 * @return string html img
 */
function aliz_get_post_thumb($size='medium'){
    $default = get_template_directory_uri().'/images/default‑thumb.jpg';
    if(has_post_thumbnail()){
        return get_the_post_thumbnail(get_the_ID(),$size,['class'=>'thumb-img','alt'=>esc_attr(get_the_title())]);
    }else{
        return '<img src="'.$default.'" class="thumb-img" alt="'.esc_attr(get_the_title()).'">';
    }
}

模板中直接调用:
php
运行
<?php echo aliz_get_post_thumb('custom‑thumb'); ?>

四、列表页完整实战示例(index.php/archive.php)


php
运行
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="item">
    <div class="pic">
        <?php echo aliz_get_post_thumb('custom‑thumb'); ?>
    </div>
    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    <div class="excerpt"><?php the_excerpt(); ?></div>
</div>
<?php endwhile; endif; ?>

五、获取特色图片 alt、title、宽高元数据


php
运行
<?php
$post_id = get_the_ID();
if(has_post_thumbnail($post_id)){
    $thumb_id = get_post_thumbnail_id($post_id);
    $alt = get_post_meta($thumb_id, '_wp_attachment_image_alt', true);
}
?>

六、常见问题排查

  1. 调用后图片不显示、空白
  • 确认 add_theme_support( 'post‑thumbnails' ); 已经写入 functions.php;
  • 确认文章后台已经真正设置特色图片;
  • 自定义图片尺寸,旧图片需要用 Regenerate Thumbnails 插件生成缩略图。
  1. 图片尺寸不对,总是输出原图很大
  • the_post_thumbnail 第二个参数必须写对尺寸名称,不能直接填数字;
  • add_image_size 第三个参数 true 开启裁剪,否则只是缩放不裁切。
  1. 特色图片在后台有,前台不输出
  • 代码必须放在 WordPress 文章循环while(have_posts())内部;
  • 循环外部调用必须传入文章 ID:get_the_post_thumbnail($post_id,'size')
  1. 图片没有 alt 标签,不利于 SEO 调用的时候手动传入 alt 属性,不要依赖系统默认。

七、补充:WP_Query 自定义循环调用特色图片


php
运行
<?php
$args = array(
    'post_type'=>'post',
    'posts_per_page'=>10
);
$query = new WP_Query($args);
if($query->have_posts()){
    while($query->have_posts()){
        $query->the_post();
        echo aliz_get_post_thumb('custom‑thumb');
    }
    wp_reset_postdata();
}
?>
小结:
  1. has_post_thumbnail() 判断是否存在特色图片;
  2. the_post_thumbnail() 直接输出;get_the_post_thumbnail() 返回字符串;
  3. get_the_post_thumbnail_url() 只获取图片地址;
  4. 生产建议封装函数,统一处理默认占位图。

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

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

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