WP DEVELOP

EP043. “套用自定义图片尺寸与手动裁切”

首页 WordPress 开发课程 PROFESSOR POST TYPE · EP043
约 5 分钟· #EP043#PROFESSOR POST TYPE
🔒 登录后可标记已读

上一讲注册好的 professorLandscape(400×260)和 professorPortrait(480×650)这两个自定义图片尺寸, 这一讲才真正在前端用起来:professor 详情页用竖版(portrait),program 详情页的教授卡片网格用横版 (landscape)。改完之后顺带讲图片裁切:add_image_size() 默认永远是从正中心裁,如果某张照片主体不在 正中间(比如偏一侧),可以给 add_image_size() 第四个参数传一个数组(如 array('left', 'top'))来指定 裁切的水平/垂直基准点,但讲师说自己实际项目里不用这个方式,更推荐装 Manual Image Crop 这个插件手动 在后台逐张图调整裁切区域,因为「不同照片没有一套万能的裁切策略」。

涉及文件

  • wp-content/themes/fictional-university-theme/single-professor.php (修改,the_post_thumbnail() 指定尺寸昵称)
  • wp-content/themes/fictional-university-theme/single-program.php (修改,the_post_thumbnail_url() 指定尺寸昵称)

代码实现


single-professor.php(修改)

the_post_thumbnail() 加上尺寸昵称参数,从默认的原图改成竖版裁切:

<?php the_post_thumbnail('professorPortrait'); ?>

single-program.php(修改)

教授卡片网格里的 the_post_thumbnail_url() 同样加上尺寸昵称,改成横版:

<img class="professor-card__image" src="<?php the_post_thumbnail_url('professorLandscape') ?>">

[截图:Manual Image Crop 插件在后台媒体库里手动调整某张教授照片裁切区域的界面]

Hook / Function 速查

名称类型用途
the_post_thumbnail($size)WP 内建 function传入尺寸昵称字符串,输出对应裁切版本的 <img>
the_post_thumbnail_url($size)WP 内建 function传入尺寸昵称字符串,输出对应裁切版本的图片 URL

常见坑

  • 前面几讲调用 the_post_thumbnail() / the_post_thumbnail_url() 时不传尺寸昵称,默认拿到的是 full
    原图(教授照片原图接近 5000×3000 像素),不指定尺寸就等于白注册了 add_image_size()
  • WordPress 默认裁切永远是从图片正中心裁,如果照片主体偏一侧,中心裁切效果会不理想。
  • 用 Manual Image Crop 插件手动裁切后,直接刷新浏览器看不到新裁切结果——因为新生成的图片文件用的
    是跟旧版本完全相同的文件名,浏览器会读缓存。必须做一次强制刷新(按住 Shift 点刷新按钮)才能看到
    新裁切的版本。这不是 WordPress 或插件的 bug,纯粹是浏览器缓存行为。

延伸 / 后续讲座会用到

下一讲 EP044 会继续处理图片相关功能:把页面顶部的 page banner 背景图和副标题也做成动态的, 而且这次不能再用特色图片字段(professor 的特色图片已经被头像占用了),需要用 ACF 新建专门的 图片字段来承载 banner 背景图。

Sources

Udemy:

  • Become a WordPress Developer: Unlocking Power With Code — Section 9, EP043