wp_get_original_image_url()
云策文档标注
概述
wp_get_original_image_url() 函数用于获取附件图片的原始上传 URL,适用于处理可能经过后期处理的图像,确保返回最初上传的文件地址。
关键要点
- 函数返回附件图片的原始 URL,若附件非图片或出错则返回 false。
- 参数 $attachment_id 为必填整数,表示附件 post ID。
- 内部逻辑:先检查附件是否为图片,再获取附件 URL 和元数据,根据元数据中的 'original_image' 字段决定原始 URL。
- 提供过滤器 wp_get_original_image_url 用于自定义原始图片 URL。
代码示例
function wp_get_original_image_url( $attachment_id ) {
if ( ! wp_attachment_is_image( $attachment_id ) ) {
return false;
}
$image_url = wp_get_attachment_url( $attachment_id );
if ( ! $image_url ) {
return false;
}
$image_meta = wp_get_attachment_metadata( $attachment_id );
if ( empty( $image_meta['original_image'] ) ) {
$original_image_url = $image_url;
} else {
$original_image_url = path_join( dirname( $image_url ), $image_meta['original_image'] );
}
return apply_filters( 'wp_get_original_image_url', $original_image_url, $attachment_id );
}注意事项
- 函数自 WordPress 5.3.0 版本引入。
- 相关函数包括 path_join(), wp_attachment_is_image(), wp_get_attachment_url(), wp_get_attachment_metadata(), apply_filters()。
- 在附件元数据中,'original_image' 字段可能为空,表示未处理,此时返回标准附件 URL。
原文内容
Retrieves the URL to an original attachment image.
Description
Similar to wp_get_attachment_url() however some images may have been processed after uploading. In this case this function returns the URL to the originally uploaded image file.
Parameters
$attachment_idintrequired-
Attachment post ID.
Source
function wp_get_original_image_url( $attachment_id ) {
if ( ! wp_attachment_is_image( $attachment_id ) ) {
return false;
}
$image_url = wp_get_attachment_url( $attachment_id );
if ( ! $image_url ) {
return false;
}
$image_meta = wp_get_attachment_metadata( $attachment_id );
if ( empty( $image_meta['original_image'] ) ) {
$original_image_url = $image_url;
} else {
$original_image_url = path_join( dirname( $image_url ), $image_meta['original_image'] );
}
/**
* Filters the URL to the original attachment image.
*
* @since 5.3.0
*
* @param string $original_image_url URL to original image.
* @param int $attachment_id Attachment ID.
*/
return apply_filters( 'wp_get_original_image_url', $original_image_url, $attachment_id );
}
Hooks
- apply_filters( ‘wp_get_original_image_url’, string $original_image_url, int $attachment_id )
-
Filters the URL to the original attachment image.
Changelog
| Version | Description |
|---|---|
| 5.3.0 | Introduced. |