[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f0BcJgX44l5AZQa18idrVwtUBM5EgrRs_xm0IOrLCzE4":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":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":32,"crawl_stats":29,"alternatives":40,"analysis":143,"fingerprints":405},"clean-unused-medias","Clean Unused Medias","1.10","xuxu.fr","https:\u002F\u002Fprofiles.wordpress.org\u002Fxuxufr\u002F","\u003Cp>Clean Unused Medias, another simple way to delete the medias you don’t need anymore.\u003C\u002Fp>\n\u003Cp>List the medias you don’t used anymore.\u003C\u002Fp>\n\u003Cp>Works with post, page, custom post type, and ACF (Advanced Custom Fields).\u003C\u002Fp>\n\u003Cp>Filters available :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The media used as site favicon\u003C\u002Fli>\n\u003Cli>The medias used as post thumbnail\u003C\u002Fli>\n\u003Cli>The medias uploaded in a post (and so related to it)\u003C\u002Fli>\n\u003Cli>The medias used in ACF fields (image and file)\u003C\u002Fli>\n\u003Cli>The medias’ URL inserted or used in a post content\u003C\u002Fli>\n\u003Cli>The medias’ URL inserted or used in \u003Ccode>wp_postmeta\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>The medias’ URL inserted or used in \u003Ccode>wp_usermeta\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>The medias’ URL inserted or used in \u003Ccode>wp_options\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Page dedicated to this plugin : https:\u002F\u002Fxuxu.fr\u002F2016\u002F09\u002F28\u002Fsupprimer-les-fichiers-non-utilises-sous-wordpress\u002F\u003C\u002Fp>\n\u003Cp>You can contact me on :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>My blog: https:\u002F\u002Fxuxu.fr\u002Fcontact\u003C\u002Fli>\n\u003Cli>My Twitter account:  https:\u002F\u002Ftwitter.com\u002Fxuxu\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can donate here ^_^ : http:\u002F\u002Fgoo.gl\u002FSORljr\u003C\u002Fp>\n","Clean Unused Medias, another simple way to delete the medias you don't need anymore.",100,8494,76,5,"2021-07-20T19:59:00.000Z","5.8.13","4.6.1","",[20,21,22,23,24],"acf","advanced-custom-fields","attachment","clean","media","https:\u002F\u002Fxuxu.fr\u002F2016\u002F09\u002F28\u002Fsupprimer-les-fichiers-non-utilises-sous-wordpress\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fclean-unused-medias.1.10.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":33,"display_name":7,"profile_url":8,"plugin_count":34,"total_installs":35,"avg_security_score":36,"avg_patch_time_days":37,"trust_score":38,"computed_at":39},"xuxufr",4,180,89,30,86,"2026-04-04T13:50:09.390Z",[41,63,84,105,126],{"slug":42,"name":43,"version":44,"author":45,"author_profile":46,"description":47,"short_description":48,"active_installs":49,"downloaded":50,"rating":51,"num_ratings":52,"last_updated":53,"tested_up_to":54,"requires_at_least":55,"requires_php":56,"tags":57,"homepage":61,"download_link":62,"security_score":11,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"delete-post-with-attachments","Delete Post with Attachments","2.0","Alsvin Tech","https:\u002F\u002Fprofiles.wordpress.org\u002Falsvin\u002F","\u003Cp>By default, when you delete a post or page, any associated media files or attachments to that post do not get deleted. Keeping these orphan files to your server will eat up a lot of precious web space for no reason.\u003C\u002Fp>\n\u003Cp>Using this plugin when you delete a post, any associated attachments will also get deleted automatically.\u003C\u002Fp>\n\u003Cp>Before deleting any media file or attachment the plugin smartly checks that the attachment is not in use elsewhere, i.e. on any other post, page, or product.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Works with popular Page Builders:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Elementor\u003C\u002Fli>\n\u003Cli>Thrive Architect\u003C\u002Fli>\n\u003Cli>Divi Builder\u003C\u002Fli>\n\u003Cli>Brizy\u003C\u002Fli>\n\u003Cli>and many more…\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Works with all popular plugins such as:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>WooCommerce\u003C\u002Fli>\n\u003Cli>Easy Digital Downloads\u003C\u002Fli>\n\u003Cli>LearnDash\u003C\u002Fli>\n\u003Cli>BuddyPress\u003C\u002Fli>\n\u003Cli>MemberPress\u003C\u002Fli>\n\u003Cli>Paid Memberships Pro\u003C\u002Fli>\n\u003Cli>and many more…\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>No configuration required\u003C\u002Fli>\n\u003Cli>Just activate and use\u003C\u002Fli>\n\u003Cli>Save your precious server storage\u003C\u002Fli>\n\u003Cli>Works automatically on post\u002Fpage deletion\u003C\u002Fli>\n\u003C\u002Ful>\n","A simple plugin to delete attached media files e.g. images\u002Fvideos\u002Fdocuments, when the post is deleted. Supports Elementor, Divi Builder, Thrive Archit &hellip;",1000,8958,84,6,"2025-08-19T14:34:00.000Z","6.8.5","4.1","5.6",[22,58,59,24,60],"cleanup","delete","post","https:\u002F\u002Fwww.alsvin-tech.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fdelete-post-with-attachments.2.0.zip",{"slug":64,"name":65,"version":66,"author":67,"author_profile":68,"description":69,"short_description":70,"active_installs":71,"downloaded":72,"rating":73,"num_ratings":74,"last_updated":75,"tested_up_to":76,"requires_at_least":77,"requires_php":78,"tags":79,"homepage":18,"download_link":82,"security_score":83,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"whatwedo-acf-cleaner","whatwedo ACF Cleaner","1.2.2","whatwedo","https:\u002F\u002Fprofiles.wordpress.org\u002Fwhatwedo\u002F","\u003Cp>We analyze the post of the selected post types against the ACF groups in use. Afterwards we remove all data from deleted groups.\u003Cbr \u002F>\nThere’s a dry run available (discovery) to see how many fields would get removed. On the actual cleanup you get prompted because it can’t be undone (so make a backup first).\u003C\u002Fp>\n\u003Ch3>Contribute\u003C\u002Fh3>\n\u003Cp>Developed with ♥ by \u003Ca href=\"https:\u002F\u002Fwhatwedo.ch\" rel=\"nofollow ugc\">whatwedo\u003C\u002Fa> in Bern.\u003Cbr \u002F>\nThanks to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTrilipuT\" rel=\"nofollow ugc\">TrilipuT\u003C\u002Fa> for contributing.\u003C\u002Fp>\n\u003Cp>This plugin was initially created for our own usage to clean a big database from old ACF data.\u003C\u002Fp>\n\u003Cp>Check out the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwhatwedo\u002Fwhatwedo-acf-cleaner\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa> and submit pull requests or open issues\u003C\u002Fp>\n","Cleanup old metadata created by Advanced Custom Fields.",800,15550,96,9,"2024-10-01T08:27:00.000Z","6.6.5","5.5","7.0",[20,80,21,81,58],"admin","cleaner","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwhatwedo-acf-cleaner.1.2.2.zip",92,{"slug":85,"name":86,"version":87,"author":88,"author_profile":89,"description":90,"short_description":91,"active_installs":92,"downloaded":93,"rating":94,"num_ratings":95,"last_updated":96,"tested_up_to":97,"requires_at_least":98,"requires_php":18,"tags":99,"homepage":103,"download_link":104,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"acf-real-media-library-field","Advanced Custom Fields: Real Media Library Folder Field","1.1.4","Matthias Günter","https:\u002F\u002Fprofiles.wordpress.org\u002Fmguenter\u002F","\u003Cp>The plugin adds a custom field to select a folder of the \u003Ca href=\"https:\u002F\u002Fdevowl.io\u002Fwordpress-real-media-library\u002F\" rel=\"nofollow ugc\">Real Media Library\u003C\u002Fa> in a field group of Advanced Custom Fields (ACF).\u003C\u002Fp>\n\u003Cp>You can configure this field type with the following parameters:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Disable selection: Allows you to disable some folder types for selection (for example, no collections).\u003C\u002Fli>\n\u003Cli>Return format: Get Real Media Library folder object or folder ID.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cp>This plugin is an add-on that allows you to use the following plugins together, which must be installed:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadvanced-custom-fields\u002F\" rel=\"ugc\">Advanced Custom Fields (ACF)\u003C\u002Fa> (Free or PRO, version 4.x or 5.x)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevowl.io\u002Fgo\u002Fcodecanyon\u002Freal-media-library?source=acf-rml-folder-field-wordpress-org\" rel=\"nofollow ugc\">Real Media Library\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Thanks to \u003Ca href=\"http:\u002F\u002Fwww.theimageyard.co.uk\u002F\" rel=\"nofollow ugc\">Jon Dennis\u003C\u002Fa> who started the development of this add-on.\u003C\u002Fp>\n\u003Cp>\u003Cem>This plugin is a free micro add-on for Real Media Library with limited support.\u003C\u002Fem>\u003C\u002Fp>\n","Media library folder field for Advanced Custom Fields (ACF). Folder created by Real Media Library.",200,9789,74,3,"2020-04-03T17:37:00.000Z","5.4.19","4.0",[20,21,100,101,102],"folder-field","media-library-folders","real-media-library","https:\u002F\u002Fdevowl.io\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Facf-real-media-library-field.zip",{"slug":106,"name":107,"version":108,"author":109,"author_profile":110,"description":111,"short_description":112,"active_installs":113,"downloaded":114,"rating":28,"num_ratings":28,"last_updated":18,"tested_up_to":115,"requires_at_least":116,"requires_php":78,"tags":117,"homepage":123,"download_link":124,"security_score":11,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":125},"advance-importer","Advance Importer","1.0.0","coder618","https:\u002F\u002Fprofiles.wordpress.org\u002Fcoder618\u002F","\u003Cp>A powerful plugin for import and export Post, Page, any Custom post type data, with any kind of attachments.\u003Cbr \u002F>\nIt work with native wordpress Importer and exporter.\u003C\u002Fp>\n\u003Cp>Some highlighted features:\u003Cbr \u002F>\n1. Import and Export with post\u002Fpage\u002Fcustom post type data with attachment(s) media\u003Cbr \u002F>\n2. Support any attachment data type, eg. Image, PDF, Sound etc\u003Cbr \u002F>\n3. Support Gutenberg editor data Import, ACF plugin Attachment Data import etc.\u003C\u002Fp>\n\u003Cp>How to export\u003Cbr \u002F>\n1. Go to Dashboard > Tools > Export\u003Cbr \u002F>\n2. Select what to export (Post type) and and Tick the checkbox “Export with attachment(s)”\u003Cbr \u002F>\n3. It will generate a XML file, which will help you to Import data\u003C\u002Fp>\n\u003Cp>How to Import\u003Cbr \u002F>\n1. Go to Dashboard > Tools > Import > Click “Run Importer” under WordPress Importer\u003Cbr \u002F>\n2. Select the XML file and click Upload file and import\u003Cbr \u002F>\n3. Tick the checkbox “Download and import file attachments” and Hit Submit\u003C\u002Fp>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Cp>For full documentation Please visit: \u003Ca href=\"https:\u002F\u002Fcoder618.github.io\u002Fadvance-importer\" title=\"Advance Importer Full Documentation\" rel=\"nofollow ugc\">https:\u002F\u002Fcoder618.github.io\u002Fadvance-importer\u003C\u002Fa>\u003C\u002Fp>\n","A powerful plugin for import and export Post, Page, any Custom post type data, with any kind of attachments.",10,1527,"6.0.11","4.5",[118,119,120,121,122],"acf-export","attachment-export","export","export-media","import","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadvance-importer","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadvance-importer.1.0.0.zip","2026-03-15T10:48:56.248Z",{"slug":127,"name":128,"version":129,"author":130,"author_profile":131,"description":132,"short_description":133,"active_installs":28,"downloaded":134,"rating":28,"num_ratings":28,"last_updated":135,"tested_up_to":136,"requires_at_least":137,"requires_php":138,"tags":139,"homepage":18,"download_link":142,"security_score":11,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"mcod-bulk-delete-media-by-content","MCOD Delete Media by Content","1.0.2","Cristian Leguizamón","https:\u002F\u002Fprofiles.wordpress.org\u002Fcrleguizamon\u002F","\u003Cp>\u003Cstrong>MCOD Delete Media by Content\u003C\u002Fstrong> allows you to \u003Cstrong>bulk delete WordPress media files\u003C\u002Fstrong> attached to a specific post type. Whether you need to clean up orphaned images from deleted WooCommerce products, remove PDFs tied to a custom post type, or purge an unused media library section after a content migration, this plugin handles the process in batches.\u003C\u002Fp>\n\u003Cp>Use it to \u003Cstrong>clean your WordPress media library\u003C\u002Fstrong> without touching media that is actively used elsewhere on your site based on your exclusions.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Free Up Server Inodes:\u003C\u002Fstrong>\u003Cbr \u002F>\nHosting servers have a limit on the number of files (inodes) they can store, regardless of disk space. Each WordPress attachment generates multiple thumbnail files, which rapidly consumes inodes. When the inode limit is reached, no new files can be created on the server. This plugin \u003Cstrong>permanently deletes media files and all their generated thumbnails\u003C\u002Fstrong> from the filesystem in batches, helping to \u003Cstrong>reduce your inode count\u003C\u002Fstrong> and restore your server’s ability to handle new uploads.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Dual Detection Strategy:\u003C\u002Fstrong>\u003Cbr \u002F>\nThis plugin uses a \u003Cstrong>dual detection strategy\u003C\u002Fstrong> to find media linked to your chosen post type by checking multiple fields:\u003Cbr \u002F>\n1. \u003Cstrong>Direct Parent:\u003C\u002Fstrong> Attachments whose \u003Ccode>post_parent\u003C\u002Fcode> points to a post of the selected type.\u003Cbr \u002F>\n2. \u003Cstrong>Meta References:\u003C\u002Fstrong> Attachment IDs stored in postmeta — including \u003Cstrong>WooCommerce product galleries\u003C\u002Fstrong> (\u003Ccode>_product_image_gallery\u003C\u002Fcode>), \u003Cstrong>ACF Image & Gallery fields\u003C\u002Fstrong>, \u003Cstrong>featured images\u003C\u002Fstrong> saved as meta, and any other custom field referencing an attachment ID.\u003C\u002Fp>\n\u003Cp>This helps identify attachments properly without inadvertently affecting active media from other areas.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Smart Cross-Type Exclusions — Protect Shared Media:\u003C\u002Fstrong>\u003Cbr \u002F>\nBefore deleting, the plugin cross-checks each attachment against other post types you select. If a product image is also used as a featured image on a Page or referenced in a Post, it will be \u003Cstrong>automatically skipped\u003C\u002Fstrong> — preventing broken images across your site.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Bulk Delete by Post Type:\u003C\u002Fstrong> Target Products, Pages, Posts, or any registered custom post type.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Media Type Filter:\u003C\u002Fstrong> Scope deletion to Images only, PDFs, Videos, Audio, or all attachments.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cross-Type Exclusions:\u003C\u002Fstrong> Protect attachments shared with other post types from accidental deletion.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Preview Mode:\u003C\u002Fstrong> Count and preview a sample of media to be deleted (with direct edit links) before running.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Safe Batch Processing:\u003C\u002Fstrong> Processes in configurable batches of 1–100 items to avoid PHP\u002Fserver timeouts on large media libraries.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Real-Time Progress Log:\u003C\u002Fstrong> Live status updates so you always know what is happening.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce & ACF Compatible:\u003C\u002Fstrong> Detects images in product galleries, ACF image\u002Fgallery fields, and other postmeta.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fully Translatable:\u003C\u002Fstrong> Internationalization-ready with a \u003Ccode>.pot\u003C\u002Fcode> file included.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>⚠️ \u003Cstrong>This plugin permanently deletes media files from the database and the server filesystem. Always create a full backup before running any deletion.\u003C\u002Fstrong>\u003C\u002Fp>\n","Bulk delete WordPress media files linked to any post type. Clean your media library in batches with smart exclusions and WooCommerce\u002FACF support.",131,"2026-03-05T01:22:00.000Z","6.9.4","5.0","7.4",[22,140,58,141,24],"bulk-delete","delete-media","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmcod-bulk-delete-media-by-content.1.0.2.zip",{"attackSurface":144,"codeSignals":232,"taintFlows":313,"riskAssessment":389,"analyzedAt":404},{"hooks":145,"ajaxHandlers":196,"restRoutes":224,"shortcodes":225,"cronEvents":226,"entryPointCount":113,"unprotectedCount":113},[146,152,156,160,163,167,171,175,179,184,188,192],{"type":147,"name":148,"callback":149,"file":150,"line":151},"action","init","lnjcm_load_textdomain","clean-unused-medias.php",52,{"type":147,"name":148,"callback":153,"file":154,"line":155},"ini_cron_lnjcm_check_medias_in_content","library\\functions.php",12,{"type":147,"name":157,"callback":158,"file":154,"line":159},"lnjcm_check_medias_in_content","cron_lnjcm_check_medias_in_content_test",22,{"type":147,"name":148,"callback":161,"file":154,"line":162},"lnjcm_define_medias_meta_keys",211,{"type":147,"name":164,"callback":165,"file":154,"line":166},"admin_print_scripts","lnjcm_add_admin_js",476,{"type":147,"name":168,"callback":169,"file":154,"line":170},"admin_print_styles","lnjcm_add_admin_css",488,{"type":147,"name":172,"callback":173,"file":154,"line":174},"admin_footer","lnjcm_admin_footer",509,{"type":147,"name":176,"callback":177,"file":154,"line":178},"admin_menu","lnjcm_submenu_add_tools",518,{"type":180,"name":181,"callback":182,"file":154,"line":183},"filter","manage_media_columns","lnjcm_add_column",572,{"type":147,"name":185,"callback":186,"priority":113,"file":154,"line":187},"manage_media_custom_column","lnjcm_display_col_content",573,{"type":147,"name":189,"callback":190,"file":154,"line":191},"admin_init","lnjcm_hook_add_column",575,{"type":180,"name":193,"callback":194,"file":154,"line":195},"plugin_action_links_clean-unused-medias\u002Fclean-unused-medias.php","lnjcm_add_settings_link",744,[197,201,204,207,209,212,214,217,219,222],{"action":198,"nopriv":199,"callback":198,"hasNonce":199,"hasCapCheck":199,"file":154,"line":200},"lnjcm_list_medias",false,686,{"action":198,"nopriv":202,"callback":198,"hasNonce":199,"hasCapCheck":199,"file":154,"line":203},true,687,{"action":205,"nopriv":199,"callback":205,"hasNonce":199,"hasCapCheck":199,"file":154,"line":206},"lnjcm_do_delete_medias",697,{"action":205,"nopriv":202,"callback":205,"hasNonce":199,"hasCapCheck":199,"file":154,"line":208},698,{"action":210,"nopriv":199,"callback":210,"hasNonce":199,"hasCapCheck":199,"file":154,"line":211},"lnjcm_crawl_medias",708,{"action":210,"nopriv":202,"callback":210,"hasNonce":199,"hasCapCheck":199,"file":154,"line":213},709,{"action":215,"nopriv":199,"callback":215,"hasNonce":199,"hasCapCheck":199,"file":154,"line":216},"lnjcm_crawl_medias_change_status",719,{"action":215,"nopriv":202,"callback":215,"hasNonce":199,"hasCapCheck":199,"file":154,"line":218},720,{"action":220,"nopriv":199,"callback":220,"hasNonce":199,"hasCapCheck":199,"file":154,"line":221},"lnjcm_get_medias_used_in",730,{"action":220,"nopriv":202,"callback":220,"hasNonce":199,"hasCapCheck":199,"file":154,"line":223},731,[],[],[227,229],{"hook":157,"callback":157,"file":154,"line":228},15,{"hook":157,"callback":157,"file":230,"line":231},"ws\\crawl.medias.php",148,{"dangerousFunctions":233,"sqlUsage":260,"outputEscaping":273,"fileOperations":28,"externalRequests":28,"nonceChecks":14,"capabilityChecks":28,"bundledLibraries":312},[234,238,241,244,247,251,254,257],{"fn":235,"file":154,"line":236,"context":237},"unserialize",40,"$lnjcm_medias_in_content_ids  = ( empty( $lnjcm_medias_in_content_index ) ) ? array() : unserialize(",{"fn":235,"file":154,"line":239,"context":240},42,"$lnjcm_medias_in_postmeta_ids = ( empty( $lnjcm_medias_in_postmeta_ids ) ) ? array() : unserialize( ",{"fn":235,"file":154,"line":242,"context":243},44,"$lnjcm_medias_in_usermeta_ids = ( empty( $lnjcm_medias_in_usermeta_ids ) ) ? array() : unserialize( ",{"fn":235,"file":154,"line":245,"context":246},46,"$lnjcm_medias_in_option_ids   = ( empty( $lnjcm_medias_in_option_ids ) ) ? array() : unserialize( $l",{"fn":235,"file":248,"line":249,"context":250},"ws\\list.medias.php",87,"$in_content_medias = ( empty( $in_content_medias ) ) ? array() : unserialize( $in_content_medias );",{"fn":235,"file":248,"line":252,"context":253},94,"$in_postmeta_medias = ( empty( $in_postmeta_medias ) ) ? array() : unserialize( $in_postmeta_medias ",{"fn":235,"file":248,"line":255,"context":256},101,"$in_usermeta_medias = ( empty( $in_usermeta_medias ) ) ? array() : unserialize( $in_usermeta_medias ",{"fn":235,"file":248,"line":258,"context":259},108,"$in_option_medias = ( empty( $in_option_medias ) ) ? array() : unserialize( $in_option_medias );",{"prepared":261,"raw":34,"locations":262},25,[263,266,268,271],{"file":154,"line":264,"context":265},220,"$wpdb->get_col() with variable interpolation",{"file":154,"line":267,"context":265},235,{"file":154,"line":269,"context":270},237,"$wpdb->query() with variable interpolation",{"file":154,"line":272,"context":270},239,{"escaped":28,"rawEcho":274,"locations":275},16,[276,279,281,284,286,289,292,294,296,298,300,302,304,306,308,310],{"file":154,"line":277,"context":278},562,"raw output",{"file":154,"line":280,"context":278},564,{"file":282,"line":283,"context":278},"ws\\crawl.change.status.php",91,{"file":230,"line":285,"context":278},167,{"file":287,"line":288,"context":278},"ws\\do.clean.medias.php",60,{"file":290,"line":291,"context":278},"ws\\get.medias.used.in.php",209,{"file":248,"line":293,"context":278},153,{"file":248,"line":295,"context":278},169,{"file":248,"line":297,"context":278},170,{"file":248,"line":299,"context":278},171,{"file":248,"line":301,"context":278},172,{"file":248,"line":303,"context":278},173,{"file":248,"line":305,"context":278},197,{"file":248,"line":307,"context":278},201,{"file":248,"line":309,"context":278},224,{"file":248,"line":311,"context":278},246,[],[314,340],{"entryPoint":315,"graph":316,"unsanitizedCount":28,"severity":339},"\u003Clist.medias> (ws\\list.medias.php:0)",{"nodes":317,"edges":336},[318,322,328,331],{"id":319,"type":320,"label":321,"file":248,"line":151},"n0","source","$_POST (x4)",{"id":323,"type":324,"label":325,"file":248,"line":326,"wp_function":327},"n1","sink","get_col() [SQLi]",56,"get_col",{"id":329,"type":320,"label":330,"file":248,"line":151},"n2","$_POST (x2)",{"id":332,"type":324,"label":333,"file":248,"line":334,"wp_function":335},"n3","get_results() [SQLi]",140,"get_results",[337,338],{"from":319,"to":323,"sanitized":202},{"from":329,"to":332,"sanitized":202},"low",{"entryPoint":341,"graph":342,"unsanitizedCount":387,"severity":388},"\u003Cget.medias.used.in> (ws\\get.medias.used.in.php:0)",{"nodes":343,"edges":378},[344,346,349,351,354,357,360,363,366,369,372,375],{"id":319,"type":320,"label":330,"file":290,"line":345},53,{"id":323,"type":347,"label":348,"file":290,"line":345},"transform","→ lnjcm_is_featured_media()",{"id":329,"type":324,"label":325,"file":154,"line":350,"wp_function":327},264,{"id":332,"type":320,"label":352,"file":290,"line":353},"$_POST",55,{"id":355,"type":347,"label":356,"file":290,"line":353},"n4","→ lnjcm_is_related_media()",{"id":358,"type":324,"label":325,"file":154,"line":359,"wp_function":327},"n5",280,{"id":361,"type":320,"label":330,"file":290,"line":362},"n6",57,{"id":364,"type":347,"label":365,"file":290,"line":362},"n7","→ lnjcm_is_ACF_media()",{"id":367,"type":324,"label":325,"file":154,"line":368,"wp_function":327},"n8",302,{"id":370,"type":320,"label":330,"file":290,"line":371},"n9",59,{"id":373,"type":347,"label":374,"file":290,"line":371},"n10","→ lnjcm_is_media_in_content()",{"id":376,"type":324,"label":325,"file":154,"line":377,"wp_function":327},"n11",345,[379,380,381,382,383,384,385,386],{"from":319,"to":323,"sanitized":199},{"from":323,"to":329,"sanitized":199},{"from":332,"to":355,"sanitized":199},{"from":355,"to":358,"sanitized":199},{"from":361,"to":364,"sanitized":199},{"from":364,"to":367,"sanitized":199},{"from":370,"to":373,"sanitized":199},{"from":373,"to":376,"sanitized":199},7,"high",{"summary":390,"deductions":391},"The \"clean-unused-medias\" plugin v1.10 presents a significant security risk due to a large number of unprotected AJAX handlers. With 10 AJAX handlers identified, all lacking authentication checks, any user, regardless of their role or permissions, can trigger these functions. This creates a broad attack surface that could be exploited to perform unintended actions within the WordPress site.  The presence of the `unserialize` function, coupled with one high-severity taint flow involving an unsanitized path, further exacerbates the risk. While the plugin has no recorded vulnerability history, this absence could be due to lack of rigorous security testing or a small user base, rather than inherent security. The lack of capability checks and proper output escaping also contributes to a weak security posture.  Overall, the plugin's strengths, such as a high percentage of prepared SQL statements, are overshadowed by critical weaknesses in authentication and input sanitization for its entry points.",[392,394,396,398,400,402],{"reason":393,"points":113},"Unprotected AJAX handlers",{"reason":395,"points":113},"High severity taint flow",{"reason":397,"points":14},"Dangerous function unserialize",{"reason":399,"points":14},"No capability checks",{"reason":401,"points":14},"Unescaped output",{"reason":403,"points":14},"Unsanitized paths in taint flow","2026-03-16T20:33:44.541Z",{"wat":406,"direct":415},{"assetPaths":407,"generatorPatterns":410,"scriptPaths":411,"versionParams":412},[408,409],"\u002Fwp-content\u002Fplugins\u002Fclean-unused-medias\u002Flibrary\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fclean-unused-medias\u002Flibrary\u002Fjs\u002Fadmin.js",[],[],[413,414],"clean-unused-medias\u002Flibrary\u002Fcss\u002Fadmin.css?ver=","clean-unused-medias\u002Flibrary\u002Fjs\u002Fadmin.js?ver=",{"cssClasses":416,"htmlComments":418,"htmlAttributes":419,"restEndpoints":420,"jsGlobals":421,"shortcodeOutput":424},[417],"lnjcm-admin-content",[],[],[],[422,423],"lnjcm_delete_all_unused_medias_confirm","lnjcm_delete_all_unused_medias",[]]