本文约 3,085 字,预计阅读 8 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:上传两百张截图,ALT 全是文件名
WordPress 上传图片时,如果不在媒体库里填”替代文本”,前台输出的 <img> 就只有 alt="",或者被主题填成文件名。常见的结果是页面里出现 alt="IMG_20240312_093214.png" 或 alt="截图 2024-03-12 上午9.32.14"。这些字符串对百度图片没有任何语义价值,图片搜索流量等于零。更常见的问题是反向的:站长意识到 ALT 重要后,把每个 ALT 都写成同一个核心词,形成堆砌。
原理分析:百度图片如何”看懂”一张图
百度图片的抓取与理解依赖三条线索,优先级大致如下:
| 线索 | 说明 | 可控性 |
|---|---|---|
| ALT 属性 | 直接的文本描述 | 完全可控 |
| 文件名与路径 | 次级文本线索 | 可控 |
| 周边正文与标题 | 上下文语义 | 可控 |
| 图像识别 | 百度自身的视觉理解 | 不可控 |
也就是说,图像识别只是补充,文本线索才是主力。ALT 的第一职责是无障碍描述——当图片无法显示时告诉读者这是什么;SEO 价值是这一职责的副产品。这条原则决定了 ALT 的正确写法:描述图片内容,而不是塞关键词。
需要区分两类图片的 ALT 策略:内容性图片(截图、架构图、产品图)必须写具体描述;装饰性图片(背景纹样、分隔线、图标)应当留空 alt="",让屏幕阅读器跳过。把装饰图也写上关键词,是很多站点被判定为堆砌的原因之一。
保姆级实操
步骤1:建立 ALT 写作模板
推荐结构:对象 + 动作/状态 + 上下文。例如”WordPress 媒体库批量编辑替代文本的输入框截图”,而不是”WordPress 图片”。
步骤2:上传时顺手填写
在媒体库附件详情里填”替代文本”,这是最省事的路径,不要指望事后批量补。
步骤3:给主题兜底
让主题在 ALT 为空时,用附件标题作为兜底,避免出现纯文件名:
// functions.php:ALT 为空时用附件标题兜底,避免输出文件名或空值
add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment ) {
if ( empty( $attr['alt'] ) ) {
$title = get_the_title( $attachment->ID );
if ( $title ) {
$attr['alt'] = $title;
}
}
return $attr;
}, 10, 2 );
步骤4:批量补全历史图片
对于已经上传的大量截图,可以按”文章标题 + 序号”批量生成 ALT,比手工点快很多:
// 一次性脚本:为所属文章的附件批量生成 ALT(用完即删,务必先备份数据库)
add_action( 'init', function() {
if ( ! current_user_can( 'manage_options' ) || ! isset( $_GET['fill_alt'] ) ) {
return;
}
$attachments = get_posts( array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => 500,
'post_parent__in' => get_posts( array(
'post_type' => 'post',
'posts_per_page' => -1,
'fields' => 'ids',
) ),
) );
$n = 0;
foreach ( $attachments as $att ) {
if ( get_post_meta( $att->ID, '_wp_attachment_image_alt', true ) ) {
continue;
}
$parent = get_post( $att->post_parent );
if ( ! $parent ) {
continue;
}
update_post_meta( $att->ID, '_wp_attachment_image_alt',
$parent->post_title . ' 配图' );
$n++;
}
wp_die( '已补全 ' . $n . ' 张图片的 ALT' );
} );
步骤5:控制长度
ALT 控制在 20–50 个字符,超过后屏幕阅读器体验变差,百度也可能截断。
步骤6:装饰图留空
主题里的图标、背景图在模板里显式写 alt="",避免被兜底逻辑填上无意义文字:
<!-- 装饰性图片:留空 alt,让辅助技术跳过 -->
<img src="/wp-content/themes/mytheme/assets/divider.svg" alt="" class="deco-divider" width="120" height="8">
步骤7:验证输出
在前台查看源代码,确认 <img> 标签都带上了合理的 alt。百度图片的收录情况可以在百度搜索资源平台的”图片”相关数据中观察,也可以在百度图片里直接搜你的图片描述文字。
常见踩坑
- ALT 全填核心词:两百张图 ALT 都是”WordPress建站”,属于典型的属性堆砌。
- ALT 等于文件名:
IMG_2381.jpg对任何人都没意义。 - 每张图都写 ALT:装饰图也写,反而稀释了内容图的语义权重。
- 中文 ALT 与英文站混用:外贸站正文是英文却写了中文 ALT,语义不匹配。
- 案例:某技术博客把历史 400 多张截图的 ALT 批量改成”文章标题 + 配图”后,三个月内百度图片来源的访问从每天不到 10 次涨到 200 多次。但同期他们把站点的图标也批量填了 ALT,结果正文里出现大量重复的图标描述文本,后来回滚了装饰图的 ALT 才稳定。
- 忽略图片周边正文:ALT 只是线索之一,图片前后有说明文字,效果远好于孤零零一张图。图片文件名与路径的处理可以参考
图片文件名SEO处理。
总结
ALT 的正确写法只有一句:把图片内容描述给看不见它的人听。做到这一点,SEO 价值自然产生;做不到,堆多少关键词也没用。行动上分三步:上传时填写、主题兜底防止空值、装饰图显式留空。历史图片用一次性脚本批量处理,处理前务必备份数据库。配合 WordPress图片压缩与WebP 一起做,图片既能被搜到,也不拖慢速度。
