{"id":121181,"date":"2020-05-05T23:01:43","date_gmt":"2020-05-05T23:01:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/exif-details\/"},"modified":"2026-03-29T21:34:36","modified_gmt":"2026-03-29T21:34:36","slug":"exif-details","status":"publish","type":"plugin","link":"https:\/\/is.wordpress.org\/plugins\/exif-details\/","author":12387480,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.11","stable_tag":"1.11","tested":"7.0","requires":"4.7","requires_php":"8.0","requires_plugins":null,"header_name":"Exif Details","header_author":"Katsushi Kawamori","header_description":"Get detailed Exif information about the media file.","assets_banners_color":"676257","last_updated":"2026-03-29 21:34:36","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/shop.riverforest-wp.info\/donate\/","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/exif-details\/","header_author_uri":"https:\/\/riverforest-wp.info\/","rating":5,"author_block_rating":4.5,"active_installs":300,"downloads":7591,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":3,"sections":["description","installation","faq","changelog"],"tags":{"1.00":{"tag":"1.00","author":"Katsushi Kawamori","date":"2020-05-05 23:02:04"},"1.01":{"tag":"1.01","author":"Katsushi Kawamori","date":"2020-05-07 01:34:48"},"1.02":{"tag":"1.02","author":"Katsushi Kawamori","date":"2020-05-08 00:26:15"},"1.03":{"tag":"1.03","author":"Katsushi Kawamori","date":"2020-05-08 11:13:17"},"1.04":{"tag":"1.04","author":"Katsushi Kawamori","date":"2020-05-10 00:29:28"},"1.05":{"tag":"1.05","author":"Katsushi Kawamori","date":"2020-06-05 12:32:11"},"1.06":{"tag":"1.06","author":"Katsushi Kawamori","date":"2021-10-25 22:36:18"},"1.07":{"tag":"1.07","author":"Katsushi Kawamori","date":"2023-07-18 22:52:09"},"1.08":{"tag":"1.08","author":"Katsushi Kawamori","date":"2023-10-28 00:17:53"},"1.09":{"tag":"1.09","author":"Katsushi Kawamori","date":"2024-11-05 23:04:07"},"1.10":{"tag":"1.10","author":"Katsushi Kawamori","date":"2025-04-16 22:57:09"},"1.11":{"tag":"1.11","author":"Katsushi Kawamori","date":"2026-03-29 21:34:36"}},"upgrade_notice":{"1.00":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":2298875,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":2298875,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":2298875,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3494049,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/upload.php\",\"preferredVersions\":{\"php\":\"8.4\",\"wp\":\"6.8\"},\"login\":true,\"plugins\":[\"exif-details\"],\"steps\":[{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/1.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/pd.w.org\\\/2025\\\/01\\\/436678fc9a3d0b166.84539805.jpg\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/2.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/pd.w.org\\\/2025\\\/05\\\/402682b43a67713e0.53120333.jpg\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/3.jpeg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/pd.w.org\\\/2025\\\/03\\\/97767cc25f90994a1.56360779.jpeg\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/4.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/pd.w.org\\\/2025\\\/04\\\/98167fe6be06705e3.19611916.jpg\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/5.jpeg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/pd.w.org\\\/2025\\\/04\\\/9726811048bc47d73.47687511.jpeg\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/6.jpg\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/pd.w.org\\\/2024\\\/03\\\/81265e92cc0415644.20497234.jpg\"}},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/1.jpg\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/2.jpg\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/3.jpeg\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/4.jpg\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/5.jpeg\"},{\"step\":\"wp-cli\",\"command\":\"wp media import \\\/wordpress\\\/wp-content\\\/6.jpg\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"exif-details\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.00","1.01","1.02","1.03","1.04","1.05","1.06","1.07","1.08","1.09","1.10","1.11"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2298875,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":2301915,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":2301915,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Display screen","2":"Sample using snippet 1 &amp; 2","3":"Sample using snippet 1 &amp; 3"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[12056,233,205],"plugin_category":[50],"plugin_contributors":[79586],"plugin_business_model":[],"class_list":["post-121181","plugin","type-plugin","status-publish","hentry","plugin_tags-exif","plugin_tags-media-library","plugin_tags-photos","plugin_category-media","plugin_contributors-katsushi-kawamori","plugin_committers-katsushi-kawamori"],"banners":{"banner":"https:\/\/ps.w.org\/exif-details\/assets\/banner-772x250.jpg?rev=2298875","banner_2x":"https:\/\/ps.w.org\/exif-details\/assets\/banner-1544x500.jpg?rev=2298875","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/exif-details\/assets\/icon-256x256.png?rev=2298875","icon_2x":"https:\/\/ps.w.org\/exif-details\/assets\/icon-256x256.png?rev=2298875","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/exif-details\/assets\/screenshot-1.png?rev=2298875","caption":"Display screen"},{"src":"https:\/\/ps.w.org\/exif-details\/assets\/screenshot-2.png?rev=2301915","caption":"Sample using snippet 1 &amp; 2"},{"src":"https:\/\/ps.w.org\/exif-details\/assets\/screenshot-3.png?rev=2301915","caption":"Sample using snippet 1 &amp; 3"}],"raw_content":"<!--section=description-->\n<p>Get detailed Exif information about the media file.<\/p>\n\n<h4>Data Selection<\/h4>\n\n<ul>\n<li>FILE<\/li>\n<li>EXIF<\/li>\n<li>GPS<\/li>\n<\/ul>\n\n<h4>Sibling plugin<\/h4>\n\n<ul>\n<li>Can use the tags generated by this plugin in the following plugin.<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/exif-caption\/\">Exif Caption<\/a>.<\/li>\n<\/ul>\n\n<h4>Special Thanks! Test data provider<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/profiles.wordpress.org\/sysbird\/\">sysbird<\/a><\/li>\n<\/ul>\n\n<h4>Sample using snippet 1 &amp; 3<\/h4>\n\n<p>[youtube https:\/\/youtu.be\/QofOiCf-BPc]<\/p>\n\n<h4>Sample of how to use the filter hook and action hook<\/h4>\n\n<ul>\n<li>Sample snippet 1<\/li>\n<\/ul>\n\n<pre><code>\/**  ==================================================\n * Sample snippet 1\n *\n * The original filter hook('exif_details_data'),\n * which changes the display when retrieving an Exif and storing it in metadata.\n * The following changes the display of the shooting date and time.\n *\n * @param array $exifdatas  exifdatas.\n * @param int   $id  id.\n *\/\nfunction exif_details_change( $exifdatas, $id ) {\n    if ( array_key_exists( 'DateTimeOriginal', $exifdatas ) ) {\n        $shooting_date = str_replace( ':', '-', substr( $exifdatas['DateTimeOriginal'], 0, 10 ) );\n        $shooting_time = substr( $exifdatas['DateTimeOriginal'], 10 );\n        $exifdatas['DateTimeOriginal'] = $shooting_date . $shooting_time;\n    }\n    return $exifdatas;\n}\nadd_filter( 'exif_details_data', 'exif_details_change', 10, 2 );\n<\/code><\/pre>\n\n<ul>\n<li>Sample snippet 2<\/li>\n<\/ul>\n\n<pre><code>\/**  ==================================================\n * Sample snippet 2\n *\n * Retrieve the post metadata and add the date and time of the shooting to the title of the media page.\n * Execute the original action hook('exif_details_update') in the function.\n *\n * @param array $title  title.\n * @param int   $id  id.\n *\/\nfunction media_title( $title, $id ) {\n    $datetime = null;\n    if ( is_attachment() ) {\n        do_action( 'exif_details_update', $id );\n        $exifdatas = get_post_meta( $id, '_exif_details', true );\n        if ( ! empty( $exifdatas ) &amp;&amp; array_key_exists( 'DateTimeOriginal', $exifdatas ) ) {\n            $datetime = ' Date:' . $exifdatas['DateTimeOriginal'];\n        }\n    }\n    return $title . $datetime;\n}\nadd_filter( 'the_title', 'media_title', 10, 2 );\n<\/code><\/pre>\n\n<ul>\n<li>Sample snippet 3<\/li>\n<\/ul>\n\n<pre><code>\/**  ==================================================\n * Sample snippet 3\n *\n * When adding new media, insert the processed data into the caption.\n * Use the original action hook ('exif_details_update') with function.\n *\n * @param array $metadata  metadata.\n * @param int   $id  id.\n *\/\nfunction media_caption( $metadata, $id ) {\n    $mime_type = get_post_mime_type( $id );\n    if ( in_array( $mime_type, array( 'image\/jpeg', 'image\/tiff' ) ) ) {\n        do_action( 'exif_details_update', $id );\n        $exifdatas = get_post_meta( $id, '_exif_details', true );\n        if ( ! empty( $exifdatas ) ) {\n            $camera = null;\n            $f_number = null;\n            $s_speed = null;\n            $iso = null;\n            $date = null;\n            $googlemap = null;\n            if ( array_key_exists( 'Model', $exifdatas ) ) {\n                $camera = 'Camera:' . $exifdatas['Model'];\n            }\n            if ( array_key_exists( 'ApertureFNumber', $exifdatas ) ) {\n                $f_number = 'F-number:' . $exifdatas['ApertureFNumber'];\n            }\n            if ( array_key_exists( 'ExposureTime', $exifdatas ) ) {\n                $s_speed = 'Shutter speed:' . $exifdatas['ExposureTime'];\n            }\n            if ( array_key_exists( 'ISOSpeedRatings', $exifdatas ) ) {\n                $isodata = json_decode( $exifdatas['ISOSpeedRatings'] );\n                if ( is_array( $isodata ) ) {\n                    $iso = 'ISO:' . $isodata[0];\n                } else {\n                    $iso = 'ISO:' . $isodata;\n                }\n            }\n            if ( array_key_exists( 'DateTimeOriginal', $exifdatas ) ) {\n                $date = 'Date:' . $exifdatas['DateTimeOriginal'];\n            }\n            if ( array_key_exists( 'latitude_dd', $exifdatas ) &amp;&amp; array_key_exists( 'longtitude_dd', $exifdatas ) ) {\n                $googlemap = '&lt;a href=\"https:\/\/www.google.com\/maps?q=' . $exifdatas['latitude_dd'] . ',' . $exifdatas['longtitude_dd'] . '\"&gt;Google Map&lt;\/a&gt;';\n            }\n            $caption = sprintf( '%1$s %2$s %3$s %4$s %5$s %6$s', $camera, $f_number, $s_speed, $iso, $date, $googlemap );\n            $caption = rtrim( $caption );\n            $caption = preg_replace( '\/\\s(?=\\s)\/', '', $caption );\n            $media_post = array(\n                'ID'           =&gt; $id,\n                'post_excerpt' =&gt; $caption,\n            );\n            wp_update_post( $media_post );\n        }\n    }\n    return $metadata;\n}\nadd_filter( 'wp_generate_attachment_metadata', 'media_caption', 10, 2 );\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>exif-details<\/code> directory to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<\/ol>\n\n<!--section=faq-->\n<p>none<\/p>\n\n<!--section=changelog-->\n<h4>[1.11] 2025\/06\/11<\/h4>\n\n<ul>\n<li>Fix - Issues related to data acquisition.<\/li>\n<\/ul>\n\n<h4>[1.10] 2025\/04\/17<\/h4>\n\n<ul>\n<li>Fix - Loading the management screen.<\/li>\n<\/ul>\n\n<h4>1.09<\/h4>\n\n<p>Changed json_encode to wp_json_encode.<\/p>\n\n<h4>1.08<\/h4>\n\n<p>Supported WordPress 6.4.\nPHP 8.0 is now required.<\/p>\n\n<h4>1.07<\/h4>\n\n<p>PHP 8.0 or higher is now supported.<\/p>\n\n<h4>1.06<\/h4>\n\n<p>Supported WordPress 5.6.<\/p>\n\n<h4>1.05<\/h4>\n\n<p>Fixed problem of original image.<\/p>\n\n<h4>1.04<\/h4>\n\n<p>Change readme.txt.<\/p>\n\n<h4>1.03<\/h4>\n\n<p>Fixed GPS data.<\/p>\n\n<h4>1.02<\/h4>\n\n<p>Fixed a problem with slash-separated data.\nChange readme.txt.<\/p>\n\n<h4>1.01<\/h4>\n\n<p>If the value is an array, it is saved as JSON.<\/p>\n\n<h4>1.00<\/h4>\n\n<p>Initial release.<\/p>","raw_excerpt":"Get detailed Exif information about the media file.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/121181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=121181"}],"author":[{"embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/katsushi-kawamori"}],"wp:attachment":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=121181"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=121181"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=121181"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=121181"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=121181"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=121181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}