{"id":115491,"date":"2020-01-01T10:04:37","date_gmt":"2020-01-01T10:04:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wp-media-recovery\/"},"modified":"2025-11-20T15:01:42","modified_gmt":"2025-11-20T15:01:42","slug":"wp-media-recovery","status":"closed","type":"plugin","link":"https:\/\/km.wordpress.org\/plugins\/wp-media-recovery\/","author":17717486,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.8.1","stable_tag":"trunk","tested":"6.8.5","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"Media Library Recovery","header_author":"Krasen Slavov","header_description":"A tool that helps you to recover older and existing images from your <code>\/wp-content\/uploads<\/code> folder after database reset.","assets_banners_color":"e2d97b","last_updated":"2025-11-20 15:01:42","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/krasenslavov.com\/hire-krasen\/","header_plugin_uri":"https:\/\/mediarecoveryplugin.com\/","header_author_uri":"https:\/\/developry.com\/","rating":4.3,"author_block_rating":0,"active_installs":1000,"downloads":78887,"num_ratings":33,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.8.1":"<p>Critical security update with CSRF protection, nonce verification, and comprehensive coding standards compliance. Highly recommended upgrade for all users.<\/p>","1.8.0":"<p>Major update with Dashboard Widget, onboarding notice, and improved interface. Recommended upgrade.<\/p>","1.0.0":"<p>Initial release for restoring lost Media Library files after migration.<\/p>"},"ratings":{"1":3,"2":3,"3":0,"4":2,"5":25},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3214538,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3214538,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3214538,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3214538,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3399850,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/plugins.php\",\"preferredVersions\":{\"php\":\"8.0\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"wp-media-recovery\"}},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3392202,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3392202,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3392202,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3392202,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3392202,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3392202,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"Media Explorer showing orphaned files","2":"Color-coded file status indicators","3":"Batch selection for recovery","4":"Recovery process rebuilding database","5":"Dashboard widget with statistics"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[250938,233,250936,4155,250937],"plugin_category":[45],"plugin_contributors":[180050],"plugin_business_model":[],"class_list":["post-115491","plugin","type-plugin","status-closed","hentry","plugin_tags-lost-media","plugin_tags-media-library","plugin_tags-media-recovery","plugin_tags-migration","plugin_tags-restore-images","plugin_category-ecommerce","plugin_contributors-krasenslavov","plugin_committers-krasenslavov"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/wp-media-recovery_e2d97b.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/wp-media-recovery\/assets\/screenshot-1.png?rev=3392202","caption":"Media Explorer showing orphaned files"},{"src":"https:\/\/ps.w.org\/wp-media-recovery\/assets\/screenshot-2.png?rev=3392202","caption":"Color-coded file status indicators"},{"src":"https:\/\/ps.w.org\/wp-media-recovery\/assets\/screenshot-3.png?rev=3392202","caption":"Batch selection for recovery"},{"src":"https:\/\/ps.w.org\/wp-media-recovery\/assets\/screenshot-4.png?rev=3392202","caption":"Recovery process rebuilding database"},{"src":"https:\/\/ps.w.org\/wp-media-recovery\/assets\/screenshot-5.png?rev=3392202","caption":"Dashboard widget with statistics"},{"src":"https:\/\/ps.w.org\/wp-media-recovery\/assets\/screenshot-6.png?rev=3392202","caption":""}],"raw_content":"<!--section=description-->\n<p>Recover files that exist on your server but don't appear in your Media Library. After site migrations, hosting transfers, or database restores, image files often get orphaned - this plugin reconnects them.<\/p>\n\n<p><strong>Have images on your server but they don't appear in your Media Library?<\/strong><\/p>\n\n<p>This plugin solves the common problem where image files exist in <code>wp-content\/uploads<\/code> but are missing from the database. It scans your uploads folder, finds orphaned files, and rebuilds database entries to restore them to your Media Library.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>Restore lost Media Library files<\/li>\n<li>Fix orphaned files on server<\/li>\n<li>Visual Media Explorer interface<\/li>\n<li>No file upload required<\/li>\n<li>After migration recovery<\/li>\n<li>Hosting transfer support<\/li>\n<li>Batch processing<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate<\/li>\n<li>Navigate to Media &gt; Media Recovery<\/li>\n<li>Media Explorer shows all orphaned files<\/li>\n<li>Select up to 10 images to recover (free version)<\/li>\n<li>Click Media Recovery button to rebuild database<\/li>\n<li>Check Media &gt; Library to confirm restoration<\/li>\n<li>Repeat for additional batches<\/li>\n<\/ol>\n\n<p>Zero file uploads - plugin only reconnects existing server files to database.<\/p>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Move sites from localhost to production<\/li>\n<li>Migrate to new hosting provider<\/li>\n<li>Recover from database restore issues<\/li>\n<li>Fix broken Media Library after migration<\/li>\n<li>Resolve orphaned file problems<\/li>\n<li>Transfer between staging and production<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>From Dashboard<\/h4>\n\n<ol>\n<li>Go to Plugins &gt; Add New<\/li>\n<li>Search for \"Media Library Recovery\"<\/li>\n<li>Click Install Now, then Activate<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Upload to \/wp-content\/plugins\/<\/li>\n<li>Activate from Plugins menu<\/li>\n<\/ol>\n\n<h4>After Activation<\/h4>\n\n<ol>\n<li>Go to Media &gt; Media Recovery<\/li>\n<li>Media Explorer displays all files in uploads folder<\/li>\n<li>Toggle Hide Existing to show only orphaned files<\/li>\n<li>Select up to 10 images with checkboxes<\/li>\n<li>Click Media Recovery button<\/li>\n<li>Wait for database rebuild to complete<\/li>\n<li>Check Media &gt; Library to verify restoration<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='my%20images%20disappeared%20after%20migrating%20my%20site.%20can%20this%20help%3F'><h3>My images disappeared after migrating my site. Can this help?<\/h3><\/dt>\n<dd><p>Yes! After site migration, files exist in your uploads folder but database entries are missing. This plugin scans your files and rebuilds the database entries to restore your Media Library.<\/p><\/dd>\n<dt id='i%20transferred%20to%20new%20hosting%20and%20lost%20my%20media%20library.%20what%20do%20i%20do%3F'><h3>I transferred to new hosting and lost my media library. What do I do?<\/h3><\/dt>\n<dd><p>Install this plugin, go to Media &gt; Media Recovery, and it shows all files on your server missing from the database. Select and recover them in batches of 10 until everything is restored.<\/p><\/dd>\n<dt id='how%20is%20this%20different%20from%20backup%20plugins%3F'><h3>How is this different from backup plugins?<\/h3><\/dt>\n<dd><p>Backup plugins restore entire sites. This plugin specializes in recovering files when they exist on your server but are missing from the database - common after migrations, hosting transfers, or partial database restores.<\/p><\/dd>\n<dt id='why%20can%20i%20only%20recover%2010%20files%20at%20a%20time%3F'><h3>Why can I only recover 10 files at a time?<\/h3><\/dt>\n<dd><p>The free version processes 10 files per batch to prevent server timeouts. Run multiple batches to recover unlimited total files. The Pro version offers unlimited batch sizes with background processing.<\/p><\/dd>\n<dt id='will%20i%20get%20duplicate%20files%3F'><h3>Will I get duplicate files?<\/h3><\/dt>\n<dd><p>No, the plugin won't duplicate or overwrite existing image files. It only rebuilds database entries for orphaned files missing from Media Library.<\/p><\/dd>\n<dt id='is%20this%20compatible%20with%20multisite%3F'><h3>Is this compatible with Multisite?<\/h3><\/dt>\n<dd><p>Multisite support is available in the Pro version. The free version works on single installations only.<\/p><\/dd>\n<dt id='which%20folders%20are%20scanned%3F'><h3>Which folders are scanned?<\/h3><\/dt>\n<dd><p>The free version scans only the default <code>wp-content\/uploads<\/code> folder. The Pro version allows custom upload folder paths.<\/p><\/dd>\n<dt id='can%20i%20recover%20all%20file%20types%3F'><h3>Can I recover all file types?<\/h3><\/dt>\n<dd><p>The free version restores image files only. The Pro version supports all media types including videos, PDFs, documents, and audio files.<\/p><\/dd>\n<dt id='does%20this%20upload%20files%20to%20my%20server%3F'><h3>Does this upload files to my server?<\/h3><\/dt>\n<dd><p>No, the plugin never uploads or overwrites files. It only scans existing files on your server and rebuilds database entries to reconnect them to Media Library.<\/p><\/dd>\n<dt id='what%20happens%20during%20the%20recovery%20process%3F'><h3>What happens during the recovery process?<\/h3><\/dt>\n<dd><p>The plugin scans your uploads folder, identifies orphaned files, then rebuilds database entries including attachment posts, metadata, and thumbnail references. Files remain on server unchanged - only database connections are restored.<\/p><\/dd>\n<dt id='can%20i%20recover%20files%20after%20database%20restore%3F'><h3>Can I recover files after database restore?<\/h3><\/dt>\n<dd><p>Yes, if you restored the database from backup but files remained on server, this plugin reconnects those orphaned files to your restored database automatically.<\/p><\/dd>\n<dt id='does%20this%20work%20with%20custom%20upload%20folders%3F'><h3>Does this work with custom upload folders?<\/h3><\/dt>\n<dd><p>Custom upload folder scanning is available in the Pro version. The free version scans the default <code>wp-content\/uploads<\/code> directory only.<\/p><\/dd>\n<dt id='can%20i%20see%20which%20files%20are%20orphaned%20before%20recovering%3F'><h3>Can I see which files are orphaned before recovering?<\/h3><\/dt>\n<dd><p>Yes, Media Explorer shows all files with color-coded status. Orange icons indicate orphaned files missing from database. Green checkmarks show files already in Media Library.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>Security - Added nonce verification to wp-pointers.php AJAX for CSRF protection<\/li>\n<li>Security - Added nonce and capability checks to mlr_reset_settings()<\/li>\n<li>Security - Fixed missing translation functions for wp_die() permission messages<\/li>\n<li>Security - Fixed missing translation for wp_send_json_success()<\/li>\n<li>Fix - Replaced string concatenation with sprintf() and proper escaping<\/li>\n<li>Fix - Removed unnecessary esc_sql() from get_posts() query<\/li>\n<li>Fix - Changed pagination validation to absint() for proper integers<\/li>\n<li>Fix - Added translation functions to all placeholder attributes<\/li>\n<li>Fix - Made \"Reload...\" and \"No more results\" translation-ready<\/li>\n<li>Update - Added comprehensive file-level DocBlocks to 38 PHP files<\/li>\n<li>Update - Improved code documentation<\/li>\n<li>Update - All files validated with PHP syntax checking<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>New - Dashboard Widget with recovery statistics and quick actions<\/li>\n<li>New - Onboarding notice for first-time users with quick start<\/li>\n<li>New - AJAX handler for dismissing onboarding notice<\/li>\n<li>Update - Improved dashboard integration with recovery status<\/li>\n<li>Update - Better visual icons and styling for onboarding<\/li>\n<li>Update - Compiled and minified CSS\/JS for performance<\/li>\n<li>Fix - JavaScript typo in mlr-admin.js<\/li>\n<li>Fix - Added proper escaping and sanitization for security<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Recover lost Media Library files after migration<\/li>\n<li>Media Explorer for viewing orphaned files<\/li>\n<li>Batch recovery for up to 10 images at once<\/li>\n<li>Database rebuild engine<\/li>\n<li>Color-coded file status indicators<\/li>\n<li>Hide existing files to show only orphaned<\/li>\n<li>Support for image file recovery<\/li>\n<\/ul>","raw_excerpt":"Restore lost images and recover missing files after migration, hosting transfer or database restore.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/115491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=115491"}],"author":[{"embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/krasenslavov"}],"wp:attachment":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=115491"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=115491"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=115491"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=115491"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=115491"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=115491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}