[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fKdAXYtE9OoZyw82C-PgyIVJFnEJebHL2nhqPuYQvMlE":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":38,"analysis":120,"fingerprints":143},"upload-media-exif-date","Upload Media Exif Date","1.08","Katsushi Kawamori","https:\u002F\u002Fprofiles.wordpress.org\u002Fkatsushi-kawamori\u002F","\u003Ch4>Register image to media library\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Change to the date\u002Ftime of EXIF information.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Sibling plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexif-caption\u002F\" rel=\"ugc\">Exif Caption\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexif-details\u002F\" rel=\"ugc\">Exif Details\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Sample of how to use the filter hook\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Sample snippet\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>\u002F**  ==================================================\n * Sample snippet for Upload Media Exif Date\n *\n * The original filter hook('umed_postdate'),\n * Get the date and time from the file name when the date and time cannot be read from the EXIF.\n *\n * @param string $postdate  postdate.\n * @param string $filename  filename.\n *\u002F\nfunction umed_postdate_from_filename( $postdate, $filename ) {\n\n    \u002F* Sample for 20191120_183022.jpg *\u002F\n    $year = substr( $filename, 0, 4 );\n    $month = substr( $filename, 4, 2 );\n    $day = substr( $filename, 6, 2 );\n    $hour = substr( $filename, 9, 2 );\n    $minute = substr( $filename, 11, 2 );\n    $second = substr( $filename, 13, 2 );\n\n    $postdate = $year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second;\n\n    return $postdate;\n\n}\nadd_filter( 'umed_postdate', 'umed_postdate_from_filename', 10, 2 );\n\u003C\u002Fcode>\u003C\u002Fpre>\n","When registering images in the media library, register with the date of EXIF information.",200,6368,100,2,"2025-11-25T22:09:00.000Z","6.9.4","4.7","8.0",[20,21,22,23,24],"date","exif","media","media-library","time","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fupload-media-exif-date\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fupload-media-exif-date.1.08.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":13,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},"katsushi-kawamori",52,56210,190,79,"2026-04-05T16:35:24.388Z",[39,57,73,85,105],{"slug":40,"name":41,"version":42,"author":7,"author_profile":8,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":13,"num_ratings":47,"last_updated":48,"tested_up_to":16,"requires_at_least":49,"requires_php":18,"tags":50,"homepage":53,"download_link":54,"security_score":13,"vuln_count":55,"unpatched_count":27,"last_vuln_date":56,"fetched_at":29},"bulk-datetime-change","Bulk Datetime Change","1.18","\u003Cp>Bulk change date\u002Ftime for posts.\u003C\u002Fp>\n\u003Ch4>Changeable\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Posts.\u003C\u002Fli>\n\u003Cli>Pages.\u003C\u002Fli>\n\u003Cli>Medias.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Picker for date\u002Ftime\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Work with \u003Ca href=\"http:\u002F\u002Fxdsoft.net\u002Fjqplugins\u002Fdatetimepicker\u002F\" rel=\"nofollow ugc\">DateTimePicker\u003C\u002Fa>. jQuery plugin select date\u002Ftime.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Logs\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Displays the last 100 logs.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How it works\u003C\u002Fh4>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Ft6ZX51qVQ0c?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n","Bulk change date\u002Ftime for posts.",7000,53844,8,"2025-11-25T21:39:00.000Z","4.6",[20,22,51,52,24],"pages","posts","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbulk-datetime-change\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbulk-datetime-change.1.18.zip",1,"2021-10-26 00:00:00",{"slug":58,"name":59,"version":60,"author":7,"author_profile":8,"description":61,"short_description":62,"active_installs":63,"downloaded":64,"rating":65,"num_ratings":66,"last_updated":67,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":68,"homepage":71,"download_link":72,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"exif-caption","Exif Caption","3.10","\u003Cp>Insert the Exif data to the caption of the media. Also replaced caption of content.\u003C\u002Fp>\n\u003Ch4>Exif\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Insert the Exif data to the caption of the media.\u003C\u002Fli>\n\u003Cli>Insert the Exif data to the alt of the media.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Logs\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Displays the last 100 logs.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Sibling plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Can extend Exif tags with the following plugin.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexif-details\u002F\" rel=\"ugc\">Exif Details\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How it works\u003C\u002Fh4>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fv_1y9PkdYQ4?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n","Insert the Exif data to the caption of the media. Also replaced caption of content.",700,25983,94,3,"2025-11-25T21:51:00.000Z",[69,21,23,70],"caption","photos","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexif-caption\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fexif-caption.3.10.zip",{"slug":74,"name":75,"version":76,"author":7,"author_profile":8,"description":77,"short_description":78,"active_installs":79,"downloaded":80,"rating":13,"num_ratings":55,"last_updated":81,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":82,"homepage":83,"download_link":84,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"exif-details","Exif Details","1.11","\u003Cp>Get detailed Exif information about the media file.\u003C\u002Fp>\n\u003Ch4>Data Selection\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>FILE\u003C\u002Fli>\n\u003Cli>EXIF\u003C\u002Fli>\n\u003Cli>GPS\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Sibling plugin\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Can use the tags generated by this plugin in the following plugin.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexif-caption\u002F\" rel=\"ugc\">Exif Caption\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Special Thanks! Test data provider\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fprofiles.wordpress.org\u002Fsysbird\u002F\" rel=\"nofollow ugc\">sysbird\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Sample using snippet 1 & 3\u003C\u002Fh4>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQofOiCf-BPc?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Ch4>Sample of how to use the filter hook and action hook\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Sample snippet 1\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>\u002F**  ==================================================\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 *\u002F\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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>Sample snippet 2\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>\u002F**  ==================================================\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 *\u002F\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 ) && 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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>Sample snippet 3\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>\u002F**  ==================================================\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 *\u002F\nfunction media_caption( $metadata, $id ) {\n    $mime_type = get_post_mime_type( $id );\n    if ( in_array( $mime_type, array( 'image\u002Fjpeg', 'image\u002Ftiff' ) ) ) {\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 ) && array_key_exists( 'longtitude_dd', $exifdatas ) ) {\n                $googlemap = '\u003Ca href=\"https:\u002F\u002Fwww.google.com\u002Fmaps?q=' . $exifdatas['latitude_dd'] . ',' . $exifdatas['longtitude_dd'] . '\">Google Map\u003C\u002Fa>';\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( '\u002F\\s(?=\\s)\u002F', '', $caption );\n            $media_post = array(\n                'ID'           => $id,\n                'post_excerpt' => $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\u003C\u002Fcode>\u003C\u002Fpre>\n","Get detailed Exif information about the media file.",300,7367,"2025-11-25T21:52:00.000Z",[21,23,70],"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fexif-details\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fexif-details.1.11.zip",{"slug":86,"name":87,"version":88,"author":89,"author_profile":90,"description":91,"short_description":92,"active_installs":79,"downloaded":93,"rating":13,"num_ratings":55,"last_updated":94,"tested_up_to":95,"requires_at_least":96,"requires_php":97,"tags":98,"homepage":102,"download_link":103,"security_score":104,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"va-removing-exif","VA Removing Exif","1.0.1","kuck1u","https:\u002F\u002Fprofiles.wordpress.org\u002Fkuck1u\u002F","\u003Cp>Automatically remove all Exif data from the new JPEG images when uploading. Please note that already uploaded images will not be processed. If you want to delete Exif from the already uploaded image, please generate thumbnail image again with “\u003Ca href=\"https:\u002F\u002Fja.wordpress.org\u002Fplugins\u002Fregenerate-thumbnails\u002F\" rel=\"nofollow ugc\">Regenerate Thumbnails\u003C\u002Fa>” etc.\u003C\u002Fp>\n\u003Ch4>How to use\u003C\u002Fh4>\n\u003Cp>Usage is easy. Just activate the plugin. This plugin requires PHP modules of the ImageMagick or GD.\u003C\u002Fp>\n\u003Ch4>Requires\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 4.4+\u003C\u002Fli>\n\u003Cli>PHP 5.4+ & ImageMagick or GD modules\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Contribute\u003C\u002Fh4>\n\u003Cp>You can fork the plugin from \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvisualive\u002Fva-removing-exif\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Attention\u003C\u002Fh4>\n\u003Cp>This plugin is intended to save your privacy and should not be used for illegal activity like copyright violations.\u003C\u002Fp>\n","Automatically remove all Exif data from the new JPEG images when uploading.",11441,"2016-12-19T05:40:00.000Z","4.7.32","4.4","",[99,100,21,23,101],"attachment","attachments","privacy","https:\u002F\u002Fgithub.com\u002Fvisualive\u002Fva-removing-exif","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fva-removing-exif.zip",85,{"slug":106,"name":107,"version":108,"author":109,"author_profile":110,"description":111,"short_description":112,"active_installs":113,"downloaded":114,"rating":13,"num_ratings":55,"last_updated":115,"tested_up_to":116,"requires_at_least":117,"requires_php":97,"tags":118,"homepage":97,"download_link":119,"security_score":104,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"exif-columns","EXIF Columns","1.0.3","fergu5","https:\u002F\u002Fprofiles.wordpress.org\u002Ffergu5\u002F","\u003Cp>This plugin adds columns to the WordPress built in Media Library for EXIF metadata.\u003C\u002Fp>\n\u003Cp>EXIF columns added are All, Credit, Camera, Focal Length, Aperture, ISO, Shutter Speed, Created Timestamp, Created Date and Copyright.\u003C\u002Fp>\n\u003Cp>This plugin builds on a code snippet on http:\u002F\u002Fwpsnipp.com by Kevin Chard.\u003C\u002Fp>\n","This plugin adds columns to the WordPress built in Media Library for EXIF metadata.",10,2400,"2013-01-18T10:41:00.000Z","3.5.2","3.5",[21,23],"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fexif-columns.zip",{"attackSurface":121,"codeSignals":127,"taintFlows":134,"riskAssessment":135,"analyzedAt":142},{"hooks":122,"ajaxHandlers":123,"restRoutes":124,"shortcodes":125,"cronEvents":126,"entryPointCount":27,"unprotectedCount":27},[],[],[],[],[],{"dangerousFunctions":128,"sqlUsage":129,"outputEscaping":131,"fileOperations":27,"externalRequests":27,"nonceChecks":27,"capabilityChecks":27,"bundledLibraries":133},[],{"prepared":27,"raw":27,"locations":130},[],{"escaped":27,"rawEcho":27,"locations":132},[],[],[],{"summary":136,"deductions":137},"The \"upload-media-exif-date\" plugin version 1.08 exhibits a seemingly strong security posture based on the provided static analysis. There are no identified dangerous functions, all SQL queries utilize prepared statements, and all output is properly escaped. Furthermore, the plugin does not perform file operations or external HTTP requests, and no vulnerabilities are recorded in its history. This suggests a development approach that prioritizes secure coding practices, with a focus on input validation and data sanitization.\n\nHowever, a significant concern arises from the complete absence of any capability checks or nonce checks across all entry points. While the static analysis reports zero entry points, the lack of these fundamental security mechanisms is problematic. In the event that functionality is added or modified in future versions, or if the static analysis missed certain aspects, these missing checks create a latent risk. If any functionality were to be exposed without these controls, it could be exploited by unauthenticated or unauthorized users.\n\nGiven the clean vulnerability history and the absence of critical code signals, the plugin appears to be well-maintained and developed with security in mind. The strength lies in its adherence to secure coding for existing features. The primary weakness, however, is the lack of robust access control and integrity checks, which are essential for any WordPress plugin to prevent potential future exploits.",[138,140],{"reason":139,"points":113},"Missing capability checks",{"reason":141,"points":113},"Missing nonce checks","2026-03-16T20:14:04.607Z",{"wat":144,"direct":151},{"assetPaths":145,"generatorPatterns":146,"scriptPaths":147,"versionParams":148},[],[],[],[149,150],"upload-media-exif-date\u002Fstyle.css?ver=1.08","upload-media-exif-date\u002Fscript.js?ver=1.08",{"cssClasses":152,"htmlComments":153,"htmlAttributes":154,"restEndpoints":155,"jsGlobals":156,"shortcodeOutput":157},[],[],[],[],[],[]]