wp_image_file_matches_image_meta() WordPress Function
This function checks whether an image file matches the image meta data. Image meta data is stored in the image's "comments" section and contains information about the image, such as the image's title, author, and copyright. The wp_image_file_matches_image_meta() function compares the image file's meta data to the image's comments section to see if they match. This function is useful for making sure that an image has not been modified since it was originally uploaded.
wp_image_file_matches_image_meta( string $image_location, array $image_meta, int $attachment_id ) #
Determines if the image meta data is for the image source file.
Description
The image meta data is retrieved by attachment post ID. In some cases the post IDs may change. For example when the website is exported and imported at another website. Then the attachment post IDs that are in post_content for the exported website may not match the same attachments at the new website.
Parameters
- $image_location
(string)(Required)The full path or URI to the image file.
- $image_meta
(array)(Required)The attachment meta data as returned by 'wp_get_attachment_metadata()'.
- $attachment_id
(int)(Optional) The image attachment ID. Default 0.
Return
(bool) Whether the image meta is for this image file.
Source
File: wp-includes/media.php
function wp_image_file_matches_image_meta( $image_location, $image_meta, $attachment_id = 0 ) { $match = false; // Ensure the $image_meta is valid. if ( isset( $image_meta['file'] ) && strlen( $image_meta['file'] ) > 4 ) { // Remove quiery args if image URI. list( $image_location ) = explode( '?', $image_location ); // Check if the relative image path from the image meta is at the end of $image_location. if ( strrpos( $image_location, $image_meta['file'] ) === strlen( $image_location ) - strlen( $image_meta['file'] ) ) { $match = true; } else { // Retrieve the uploads sub-directory from the full size image. $dirname = _wp_get_attachment_relative_path( $image_meta['file'] ); if ( $dirname ) { $dirname = trailingslashit( $dirname ); } if ( ! empty( $image_meta['original_image'] ) ) { $relative_path = $dirname . $image_meta['original_image']; if ( strrpos( $image_location, $relative_path ) === strlen( $image_location ) - strlen( $relative_path ) ) { $match = true; } } if ( ! $match && ! empty( $image_meta['sizes'] ) ) { foreach ( $image_meta['sizes'] as $image_size_data ) { $relative_path = $dirname . $image_size_data['file']; if ( strrpos( $image_location, $relative_path ) === strlen( $image_location ) - strlen( $relative_path ) ) { $match = true; break; } } } } } /** * Filters whether an image path or URI matches image meta. * * @since 5.5.0 * * @param bool $match Whether the image relative path from the image meta * matches the end of the URI or path to the image file. * @param string $image_location Full path or URI to the tested image file. * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. * @param int $attachment_id The image attachment ID or 0 if not supplied. */ return apply_filters( 'wp_image_file_matches_image_meta', $match, $image_location, $image_meta, $attachment_id ); }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
5.5.0 | Introduced. |