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

WordPress 特色图片调用代码 实现 PC 与移动端加载不同尺寸缩略图

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

前言

搭建 WordPress 资讯站、资源站,首页与栏目列表文章封面图如果共用一套尺寸,很容易出现两种问题:PC 端图片拉伸难看,移动端图片过大加载缓慢。

最佳解决方案:PC、移动端分别使用独立尺寸缩略图。很多新手会采用 JS 切换图片,存在延迟、不利于 SEO;本文提供两套原生方案:HTML srcset 响应式(首选)、PHP 判断 UA 适配,全部原生 WP 函数,无需额外插件,同时整合「无特色图片自动显示默认图」逻辑。

一、基础前置:开启特色图片支持 + 自定义缩略图尺寸

将代码添加到主题 functions.php

// 开启特色图片功能
add_theme_support( 'post-thumbnails' );

// PC端列表缩略图 宽360 高202 true=居中强制裁剪
add_image_size( 'thumb-pc', 360, 202, true );
// 移动端列表缩略图 宽750 高420 true=居中强制裁剪
add_image_size( 'thumb-mobile', 750, 420, true );

⚠️重要提醒: 新增图片尺寸后,旧上传图片不会自动生成新尺寸,安装插件 Regenerate Thumbnails 一键重建缩略图;新上传图片会自动生成两套尺寸。

参数说明: true:居中裁剪,不会产生黑边,适合列表封面; false:等比例完整缩放,保留原图全部内容。

方案一:srcset 原生响应式(强烈推荐,静态缓存站点首选)

原理:利用浏览器屏幕宽度自动选择对应图片,不依靠 PHP 判断访问设备,不受页面缓存、CDN 影响,SEO 友好,现代浏览器全部兼容。

列表循环完整调用代码

<?php
if ( has_post_thumbnail() ) {
    // 存在特色图片,读取两套尺寸地址
    $img_pc = get_the_post_thumbnail_url( get_the_ID(), 'thumb-pc' );
    $img_mobile = get_the_post_thumbnail_url( get_the_ID(), 'thumb-mobile' );
} else {
    // 没有特色图片,加载两套默认占位图
    $img_pc = get_template_directory_uri() . '/skin/images/nopic_pc.jpg';
    $img_mobile = get_template_directory_uri() . '/skin/images/nopic_m.jpg';
}
$alt_text = esc_attr( get_the_title() );
?>
<a href="<?php the_permalink(); ?>">
    <img 
        srcset="<?php echo $img_mobile; ?> 750w, <?php echo $img_pc; ?> 360w"
        sizes="(max-width:768px) 750px, 360px"
        src="<?php echo $img_pc; ?>" 
        alt="<?php echo $alt_text; ?>"
        loading="lazy"
    >
</a>

代码说明:

  1. loading="lazy" 开启图片懒加载,优化页面加载速度;
  2. sizes 设置分界:768px 作为移动端与 PC 断点;
  3. esc_attr() 转义标题,防止特殊符号引发 HTML 报错。

封装全局函数(推荐,模板一行调用)

放入 functions.php,全站任意位置直接调用,便于统一维护图片路径:

function aliz_get_post_thumb_responsive(){
    $size_pc = 'thumb-pc';
    $size_mob = 'thumb-mobile';
    // 默认图片路径根据自己主题修改
    $default_pc = get_template_directory_uri().'/skin/images/nopic_pc.jpg';
    $default_mob = get_template_directory_uri().'/skin/images/nopic_m.jpg';

    if(has_post_thumbnail()){
        $url_pc = get_the_post_thumbnail_url(get_the_ID(),$size_pc);
        $url_mob = get_the_post_thumbnail_url(get_the_ID(),$size_mob);
    }else{
        $url_pc = $default_pc;
        $url_mob = $default_mob;
    }
    $title = esc_attr(get_the_title());
    $html = '<img srcset="'.$url_mob.' 750w, '.$url_pc.' 360w" sizes="(max-width:768px)750px,360px" src="'.$url_pc.'" alt="'.$title.'" loading="lazy">';
    return $html;
}

模板调用方式:

<?php echo aliz_get_post_thumb_responsive(); ?>

方案二:PHP 判断 UA 输出不同图片(兼容老旧浏览器)

适用场景:需要严格区分设备,必须输出单一图片地址; 缺点:开启页面静态缓存、CDN 缓存环境容易判断失效,缓存站点优先使用 srcset 方案

1、functions.php 添加移动端判断函数

function aliz_is_mobile() {
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $mobile_words = ['android','iphone','ipad','ipod','windows phone','mobile'];
    foreach ($mobile_words as $word) {
        if(stripos($ua,$word)!==false){
            return true;
        }
    }
    return false;
}

2、列表模板完整调用示例

<?php
$is_mobile = aliz_is_mobile();
if ( has_post_thumbnail() ) {
    if($is_mobile){
        $thumb_url = get_the_post_thumbnail_url(get_the_ID(),'thumb-mobile');
    }else{
        $thumb_url = get_the_post_thumbnail_url(get_the_ID(),'thumb-pc');
    }
}else{
    // 无图默认图
    if($is_mobile){
        $thumb_url = get_template_directory_uri().'/skin/images/nopic_m.jpg';
    }else{
        $thumb_url = get_template_directory_uri().'/skin/images/nopic_pc.jpg';
    }
}
?>
<a href="<?php the_permalink(); ?>">
    <img src="<?php echo $thumb_url; ?>" alt="<?php the_title(); ?>" loading="lazy">
</a>

补充:基础特色图片简易调用(新手备用)

只需要单一尺寸、不需要自适应可以直接使用这套基础代码:

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

常见问题排查

  1. 新增尺寸不生效,找不到图片 执行插件 Regenerate Thumbnails 重建缩略图;
  2. 移动端依旧加载 PC 图片 静态缓存站点不要使用 UA 判断方案,切换 srcset;清理浏览器缓存测试;
  3. alt 标题为空 务必使用 esc_attr() 转义标题,避免引号、特殊字符破坏标签;
  4. 默认图片 404 核对 get_template_directory_uri() 路径,不要直接写死域名。

开发优化小技巧

  1. 移动端缩略图建议画质适当提高,手机屏幕分辨率更高;
  2. 两套默认占位图分开制作,不要共用一张图片;
  3. 图片文件夹权限保证可读,CDN 站点开启静态资源缓存;
  4. 可以搭配图片压缩插件,进一步降低图片体积,提升网页速度。

总结

  1. 追求稳定、利于 SEO、使用页面缓存 / CDN:选用 srcset 响应式方案
  2. 无静态缓存、需要强制输出单一图片地址:选用 PHP UA 判断方案;
  3. 统一封装函数,方便后期修改图片尺寸、默认图路径,减少模板多处改动。

全部代码原生 WordPress 函数,无第三方插件依赖,适合主题二次开发、自建资讯网站直接部署。


 

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

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

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