{"id":364558,"date":"2026-09-10T08:54:49","date_gmt":"2026-09-10T08:54:49","guid":{"rendered":"https:\/\/es.wordpress.org\/plugins\/tso-stack-inspector\/"},"modified":"2026-09-10T08:54:26","modified_gmt":"2026-09-10T08:54:26","slug":"tso-stack-inspector","status":"publish","type":"plugin","link":"https:\/\/me.wordpress.org\/plugins\/tso-stack-inspector\/","author":9581708,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.1","requires_php":"7.4","requires_plugins":null,"header_name":"TSO Stack Inspector","header_author":"Tu Soporte Online","header_description":"Find where plugin shortcodes, blocks, and metadata are used before you deactivate or uninstall.","assets_banners_color":"314a62","last_updated":"2026-09-10 08:54:26","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ko-fi.com\/deadko_cat","header_plugin_uri":"","header_author_uri":"https:\/\/www.tusoporteonline.es\/blog","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"deadko","date":"2026-09-10 08:54:26","revision":3689588}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689581,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689581,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1500x417.png":{"filename":"banner-1500x417.png","revision":3689581,"resolution":"1500x417","location":"assets","locale":"","width":1500,"height":485},"banner-770x214.png":{"filename":"banner-770x214.png","revision":3689581,"resolution":"770x214","location":"assets","locale":"","width":770,"height":249}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3689581,"resolution":"1","location":"assets","locale":"","width":1219,"height":701},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3689581,"resolution":"2","location":"assets","locale":"","width":1202,"height":855},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3689581,"resolution":"3","location":"assets","locale":"","width":1208,"height":761},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3689581,"resolution":"4","location":"assets","locale":"","width":1233,"height":866}},"screenshots":{"1":"Shortcode scan results grouped by location, ready to review before uninstalling a plugin.","2":"Risk verdict banner \u2014 a clear safe \/ review \/ risk summary shown after a scan.","3":"Inactive plugins audit \u2014 see at a glance which deactivated plugins still leave shortcodes, blocks, options, or meta behind.","4":"Scan settings \u2014 background scan, history size limit, and ignore list."}},"plugin_section":[],"plugin_tags":[1220,148076,732,80,11339],"plugin_category":[43,52],"plugin_contributors":[260487],"plugin_business_model":[],"class_list":["post-364558","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-gutenberg","plugin_tags-maintenance","plugin_tags-shortcode","plugin_tags-uninstall","plugin_category-customization","plugin_category-performance","plugin_contributors-deadko","plugin_committers-deadko"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tso-stack-inspector\/assets\/icon-128x128.png?rev=3689581","icon_2x":"https:\/\/ps.w.org\/tso-stack-inspector\/assets\/icon-256x256.png?rev=3689581","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tso-stack-inspector\/assets\/screenshot-1.png?rev=3689581","caption":"Shortcode scan results grouped by location, ready to review before uninstalling a plugin."},{"src":"https:\/\/ps.w.org\/tso-stack-inspector\/assets\/screenshot-2.png?rev=3689581","caption":"Risk verdict banner \u2014 a clear safe \/ review \/ risk summary shown after a scan."},{"src":"https:\/\/ps.w.org\/tso-stack-inspector\/assets\/screenshot-3.png?rev=3689581","caption":"Inactive plugins audit \u2014 see at a glance which deactivated plugins still leave shortcodes, blocks, options, or meta behind."},{"src":"https:\/\/ps.w.org\/tso-stack-inspector\/assets\/screenshot-4.png?rev=3689581","caption":"Scan settings \u2014 background scan, history size limit, and ignore list."}],"raw_content":"<!--section=description-->\n<p>TSO Stack Inspector helps agencies and site owners answer a critical question before removing a plugin: <strong>where is it still used?<\/strong><\/p>\n\n<p>Scan posts, pages, custom post types, reusable blocks, Site Editor templates, widgets, navigation menus, and wp_options for:<\/p>\n\n<ul>\n<li><strong>Shortcodes<\/strong> registered by a plugin or entered manually<\/li>\n<li><strong>Gutenberg blocks<\/strong> declared by a plugin<\/li>\n<li><strong>Post meta prefixes<\/strong> inferred from plugin code (including page-builder JSON meta)<\/li>\n<\/ul>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li><strong>By plugin<\/strong> \u2014 pick an installed plugin and run a batched scan before uninstall<\/li>\n<li><strong>Risk verdict<\/strong> \u2014 after each scan, a clear safe \/ review \/ risk summary for uninstall decisions<\/li>\n<li><strong>Replace (dry-run)<\/strong> \u2014 preview and apply shortcode\/block renames in post content (batched, with confirmation and undo backups)<\/li>\n<li><strong>Orphans<\/strong> \u2014 find shortcodes\/blocks still in content but no longer registered<\/li>\n<li><strong>History diff<\/strong> \u2014 compare two saved scans<\/li>\n<li><strong>Inactive plugins audit<\/strong> \u2014 quickly see which deactivated plugins still leave traces (uses the site index)<\/li>\n<li><strong>Shortcode finder<\/strong> \u2014 search any shortcode tag across the site<\/li>\n<li><strong>Block finder<\/strong> \u2014 search a block namespace (e.g. <code>contact-form-7\/contact-form-selector<\/code>)<\/li>\n<li><strong>Theme scan<\/strong> \u2014 active or inactive themes<\/li>\n<li><strong>Compare plugins<\/strong> \u2014 shared vs exclusive signatures before migrations<\/li>\n<li><strong>Inventory<\/strong> \u2014 list registered shortcodes and discovered plugin signatures<\/li>\n<li><strong>Scan history<\/strong> \u2014 limited, auto-pruned, with delete\/clear<\/li>\n<li><strong>Export CSV \/ Print PDF<\/strong> \u2014 download scan results, orphans, or inactive-plugin audits as CSV, or open a printable report after a scan<\/li>\n<li><strong>Refresh signatures<\/strong> \u2014 rebuild the cached plugin profile without waiting 24 hours<\/li>\n<li><strong>Options Cleaner link<\/strong> \u2014 jump to TSO Options &amp; Tables Cleaner when installed to remove leftover options and tables after uninstall<\/li>\n<li><strong>Site index<\/strong> \u2014 built in the background when you open the admin screen (or when you scan); reused for faster scans and audits<\/li>\n<li><strong>Background scan<\/strong> \u2014 optional checkbox to keep a large scan running via WP-Cron after you close the admin tab; reopen the screen later to see the finished results<\/li>\n<li><strong>Ignore list<\/strong> \u2014 hide noisy shortcodes, blocks, or meta\/option keys from results<\/li>\n<li><strong>Grouped results<\/strong> \u2014 scan hits grouped by location, with copy-tag and a pre-uninstall checklist<\/li>\n<li><strong>Orphans \u2192 Replace<\/strong> \u2014 jump from an orphan tag to the Replace tab already filled in<\/li>\n<li><strong>Admin UI languages<\/strong> \u2014 English, Spanish, and Catalan in the Tools screen; community translations via translate.wordpress.org after publication<\/li>\n<\/ul>\n\n<p><strong>How it works<\/strong><\/p>\n\n<p>The plugin reads your content and widget options locally. It does not send data to external services. Plugin signatures (shortcodes, blocks, meta prefixes) are discovered by scanning plugin PHP sources and cached for 24 hours. The site content index is stored under uploads and rebuilt when content or settings change.<\/p>\n\n<p><strong>Multisite<\/strong><\/p>\n\n<p>Works on WordPress Multisite: scans, caches, and settings are per-site. Uninstalling from the network admin cleans up every site in the network, not just the main site.<\/p>\n\n<p><strong>Limitations<\/strong><\/p>\n\n<ul>\n<li>Static code scan may miss dynamically registered shortcodes or blocks<\/li>\n<li>Meta prefix detection is heuristic; always review results before uninstalling<\/li>\n<li>Very large sites run scans in batches; tick <strong>Background scan<\/strong> to let a long scan keep going via WP-Cron after you close the tab, or keep the tab open otherwise<\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>TSO Stack Inspector stores only:<\/p>\n\n<ul>\n<li>Your admin UI language preference in user meta (<code>tso_stack_inspector_ui_lang<\/code>)<\/li>\n<li>Optional scan settings in <code>wp_options<\/code> (<code>tso_stack_inspector_scan_settings<\/code>), including history size limit<\/li>\n<li>A short index of recent completed scans in <code>wp_options<\/code> (<code>tso_stack_inspector_scan_history<\/code>)<\/li>\n<li>Temporary scan job data in transients (auto-expire)<\/li>\n<li>Optional site-index cache, scan-history JSON, and replace-backup JSON under <code>wp-content\/uploads\/tso-stack-inspector\/<\/code> (local disk only; directory is denied via <code>.htaccess<\/code> \/ <code>web.config<\/code> + empty <code>index.html<\/code>; removed on uninstall when possible)<\/li>\n<li>Replace backup index in <code>wp_options<\/code> (<code>tso_stack_inspector_replace_backups<\/code>, ~48h retention)<\/li>\n<\/ul>\n\n<p>No data is transmitted to external servers. Scans run only when an administrator starts them from Tools \u2192 TSO Stack Inspector.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate through the Plugins screen<\/li>\n<li>Open <strong>Tools \u2192 TSO Stack Inspector<\/strong> (or click <strong>Open inspector<\/strong> under the plugin on the Plugins screen)<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20is%20the%20admin%20menu%3F\"><h3>Where is the admin menu?<\/h3><\/dt>\n<dd><p>Go to <strong>Tools \u2192 TSO Stack Inspector<\/strong>. Administrators also see <strong>Open inspector<\/strong> under the plugin name on <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/p><\/dd>\n<dt id=\"does%20this%20delete%20anything%3F\"><h3>Does this delete anything?<\/h3><\/dt>\n<dd><p>Scans, orphans, and audits are read-only. The optional <strong>Replace<\/strong> tab can edit <code>post_content<\/code> (shortcode\/block renames) after a dry-run preview, with short-lived undo backups \u2014 always keep your own site backup. Stack Inspector does not delete plugins, options, or database tables; use TSO Options &amp; Tables Cleaner for leftover options\/tables after uninstall.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%20or%20other%20page%20builders%3F\"><h3>Does it work with Elementor or other page builders?<\/h3><\/dt>\n<dd><p>Yes, partially. The scanner also inspects common builder meta keys such as <code>_elementor_data<\/code> for embedded shortcodes and blocks.<\/p><\/dd>\n<dt id=\"will%20a%20scan%20slow%20down%20my%20site%3F\"><h3>Will a scan slow down my site?<\/h3><\/dt>\n<dd><p>Scans run in the admin in small batches and only when you start them. Front-end visitors are not affected.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First version<\/li>\n<\/ul>","raw_excerpt":"Find where plugin shortcodes, blocks, and metadata are used before you deactivate or uninstall.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=364558"}],"author":[{"embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/deadko"}],"wp:attachment":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364558"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364558"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364558"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364558"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364558"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}