WordPress不会将生成的大小路径存储在任何地方,您需要构建它。
根据建议@kraftner 在评论中,wp_get_attachment_metadata()
可用于获取构建路径所需的部分内容。另一种选择是image_get_intermediate_size()
.
缺少的部分是上载文件夹的绝对路径理论上,可以通过wp_upload_dir()
但有一个问题:该函数在调用上载文件夹时立即返回该文件夹,但始终存在上载文件时上载路径不同的可能性。
所以only 可以假设缩放后的图像与原始图像位于同一文件夹中。
这一假设可能看起来有点不切实际,也可能有点不切实际,但它在WordPress核心中被以下函数使用image_downsize() 这正好可以替换字符串(参见第行#184 of media.php
), 因此,如果您正在寻找官方途径。。就是那个。
把东西放在一起:
function scaled_image_path($attachment_id, $size = \'thumbnail\') {
$file = get_attached_file($attachment_id, true);
if (empty($size) || $size === \'full\') {
// for the original size get_attached_file is fine
return realpath($file);
}
if (! wp_attachment_is_image($attachment_id) ) {
return false; // the id is not referring to a media
}
$info = image_get_intermediate_size($attachment_id, $size);
if (!is_array($info) || ! isset($info[\'file\'])) {
return false; // probably a bad size argument
}
return realpath(str_replace(wp_basename($file), $info[\'file\'], $file));
}
上面的函数获取附件id和大小并返回路径。
我已经申请了realpath
之前返回路径,因为该函数对于不存在的文件返回false,所以如果出现问题,整个函数始终返回false。
此流程的唯一替代方法是自己将缩放图像的路径保存到某个位置,可能会发布元数据,并在需要时进行检索,但这只能用于插件激活后上载的文件。。。