如何在WordPress API调用中高效获取特色媒体全尺寸图片信息?
解决WordPress API中获取附件全尺寸、标题及绝对路径的需求
嘿,你完全不用自己手动遍历图片尺寸——WordPress核心早就提供了完美匹配你需求的内置函数:wp_prepare_attachment_for_js()!
这个函数专门为前端/API场景设计,它不仅能返回和wp_get_attachment_metadata()类似的尺寸元数据,还会自动处理好图片标题、绝对URL路径,甚至包括alt文本、上传日期等额外信息,完全省去了你手动拼接或遍历的麻烦。
具体用法示例
1. 在REST API中扩展featured_media字段
如果你想在文章的API响应里直接返回完整的featured media数据,可以通过rest_prepare_post钩子来实现:
add_filter('rest_prepare_post', function($response, $post, $request) { // 获取文章的特色图片ID $featured_id = get_post_thumbnail_id($post->ID); if ($featured_id) { // 调用内置函数获取完整的附件数据 $attachment_data = wp_prepare_attachment_for_js($featured_id); // 将数据添加到API响应中 $response->data['featured_media_details'] = $attachment_data; } return $response; }, 10, 3);
2. 直接在主题/插件中调用
如果你是在自定义代码里需要获取这些数据,直接传入附件ID即可:
$attachment_id = 123; // 替换为你的附件ID $attachment_data = wp_prepare_attachment_for_js($attachment_id); // 输出你需要的字段示例 echo '图片标题:' . $attachment_data['title']['rendered']; echo '原始图片绝对路径:' . $attachment_data['url']; echo '所有尺寸数据:'; print_r($attachment_data['sizes']); // 包含thumbnail、medium、large等所有预设尺寸的URL、宽高
函数返回的核心字段说明
wp_prepare_attachment_for_js()返回的数组里包含你需要的所有关键信息:
title.rendered:经过过滤的图片标题url:原始图片的绝对URL路径sizes:一个包含所有注册尺寸的数组,每个尺寸下有url(该尺寸的绝对路径)、width、height、mime-type等alt:图片的alt文本date:图片上传日期meta:附件的元数据(包括EXIF信息等)
这个函数从WordPress 3.5版本就已存在,是官方推荐的处理前端/API附件数据的方案,比手动调用wp_get_attachment_metadata()再拼接URL要高效得多,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Callum
相关产品推荐
相关产品推荐

