=== Exif Details === Contributors: Katsushi Kawamori Donate link: https://shop.riverforest-wp.info/donate/ Tags: exif, media library, photos Requires at least: 4.7 Requires PHP: 8.0 Tested up to: 7.0 Stable tag: 1.11 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Get detailed Exif information about the media file. == Description == Get detailed Exif information about the media file. = Data Selection = * FILE * EXIF * GPS = Sibling plugin = * Can use the tags generated by this plugin in the following plugin. * [Exif Caption](https://wordpress.org/plugins/exif-caption/). = Special Thanks! Test data provider = * [sysbird](https://profiles.wordpress.org/sysbird/) = Sample using snippet 1 & 3 = [youtube https://youtu.be/QofOiCf-BPc] = Sample of how to use the filter hook and action hook = * Sample snippet 1 ~~~ /** ================================================== * Sample snippet 1 * * The original filter hook('exif_details_data'), * which changes the display when retrieving an Exif and storing it in metadata. * The following changes the display of the shooting date and time. * * @param array $exifdatas exifdatas. * @param int $id id. */ function exif_details_change( $exifdatas, $id ) { if ( array_key_exists( 'DateTimeOriginal', $exifdatas ) ) { $shooting_date = str_replace( ':', '-', substr( $exifdatas['DateTimeOriginal'], 0, 10 ) ); $shooting_time = substr( $exifdatas['DateTimeOriginal'], 10 ); $exifdatas['DateTimeOriginal'] = $shooting_date . $shooting_time; } return $exifdatas; } add_filter( 'exif_details_data', 'exif_details_change', 10, 2 ); ~~~ * Sample snippet 2 ~~~ /** ================================================== * Sample snippet 2 * * Retrieve the post metadata and add the date and time of the shooting to the title of the media page. * Execute the original action hook('exif_details_update') in the function. * * @param array $title title. * @param int $id id. */ function media_title( $title, $id ) { $datetime = null; if ( is_attachment() ) { do_action( 'exif_details_update', $id ); $exifdatas = get_post_meta( $id, '_exif_details', true ); if ( ! empty( $exifdatas ) && array_key_exists( 'DateTimeOriginal', $exifdatas ) ) { $datetime = ' Date:' . $exifdatas['DateTimeOriginal']; } } return $title . $datetime; } add_filter( 'the_title', 'media_title', 10, 2 ); ~~~ * Sample snippet 3 ~~~ /** ================================================== * Sample snippet 3 * * When adding new media, insert the processed data into the caption. * Use the original action hook ('exif_details_update') with function. * * @param array $metadata metadata. * @param int $id id. */ function media_caption( $metadata, $id ) { $mime_type = get_post_mime_type( $id ); if ( in_array( $mime_type, array( 'image/jpeg', 'image/tiff' ) ) ) { do_action( 'exif_details_update', $id ); $exifdatas = get_post_meta( $id, '_exif_details', true ); if ( ! empty( $exifdatas ) ) { $camera = null; $f_number = null; $s_speed = null; $iso = null; $date = null; $googlemap = null; if ( array_key_exists( 'Model', $exifdatas ) ) { $camera = 'Camera:' . $exifdatas['Model']; } if ( array_key_exists( 'ApertureFNumber', $exifdatas ) ) { $f_number = 'F-number:' . $exifdatas['ApertureFNumber']; } if ( array_key_exists( 'ExposureTime', $exifdatas ) ) { $s_speed = 'Shutter speed:' . $exifdatas['ExposureTime']; } if ( array_key_exists( 'ISOSpeedRatings', $exifdatas ) ) { $isodata = json_decode( $exifdatas['ISOSpeedRatings'] ); if ( is_array( $isodata ) ) { $iso = 'ISO:' . $isodata[0]; } else { $iso = 'ISO:' . $isodata; } } if ( array_key_exists( 'DateTimeOriginal', $exifdatas ) ) { $date = 'Date:' . $exifdatas['DateTimeOriginal']; } if ( array_key_exists( 'latitude_dd', $exifdatas ) && array_key_exists( 'longtitude_dd', $exifdatas ) ) { $googlemap = 'Google Map'; } $caption = sprintf( '%1$s %2$s %3$s %4$s %5$s %6$s', $camera, $f_number, $s_speed, $iso, $date, $googlemap ); $caption = rtrim( $caption ); $caption = preg_replace( '/\s(?=\s)/', '', $caption ); $media_post = array( 'ID' => $id, 'post_excerpt' => $caption, ); wp_update_post( $media_post ); } } return $metadata; } add_filter( 'wp_generate_attachment_metadata', 'media_caption', 10, 2 ); ~~~ == Installation == 1. Upload `exif-details` directory to the `/wp-content/plugins/` directory 2. Activate the plugin through the 'Plugins' menu in WordPress == Frequently Asked Questions == none == Screenshots == 1. Display screen 2. Sample using snippet 1 & 2 3. Sample using snippet 1 & 3 == Changelog == = [1.11] 2025/06/11 = * Fix - Issues related to data acquisition. = [1.10] 2025/04/17 = * Fix - Loading the management screen. = 1.09 = Changed json_encode to wp_json_encode. = 1.08 = Supported WordPress 6.4. PHP 8.0 is now required. = 1.07 = PHP 8.0 or higher is now supported. = 1.06 = Supported WordPress 5.6. = 1.05 = Fixed problem of original image. = 1.04 = Change readme.txt. = 1.03 = Fixed GPS data. = 1.02 = Fixed a problem with slash-separated data. Change readme.txt. = 1.01 = If the value is an array, it is saved as JSON. = 1.00 = Initial release. == Upgrade Notice == = 1.00 = Initial release.