函数文档

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.

Return

string|false Attachment image URL, false on error or if the attachment is not an image.

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.