=== Foureyed Shortcode Control ===
Contributors: mryudha
Tags: shortcodes, shortcode, broken shortcode, security improvements, shortcode manager
Requires at least: 6.2
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.0.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Donate link: https://paypal.me/mryudha

Discover, manage, and silence shortcodes on your WordPress site. Find orphaned shortcodes, control what renders, and keep your content clean — no coding needed.

== Description ==

Shortcodes are everywhere on WordPress sites — in posts, pages, widgets, and theme settings. But what happens when a plugin is deleted? Its shortcodes often remain broken in your content, outputting raw text and cluttering your pages.

**Foureyed Shortcode Control** gives you complete visibility and control over every shortcode on your site. See exactly which plugin, theme, or WordPress core registered each shortcode, scan your content for broken ones, and manage their behaviour — all from a clean admin interface, without touching code.

### What You Can Do:

*   **Find Every Shortcode**: See a complete list of all registered shortcodes and instantly know which plugin, theme, or WordPress core created each one.
*   **Scan Your Content**: Scan your entire post library to find orphaned shortcodes left behind by deleted plugins — see exactly which posts are affected.
*   **Enable, Disable, or Silence**: Disable a shortcode to let it pass through as raw text, or Silence it so it outputs nothing at all. One click, fully reversible.
*   **Manage Orphaned Shortcodes**: Silence orphaned shortcodes from removed plugins so they stop cluttering your content.
*   **Lightning Fast**: Zero impact on your website visitors. The plugin only runs in your admin area — no front-end overhead.

== Installation ==

1. Upload the `foureyed-shortcode-control` folder to `/wp-content/plugins/`
2. Activate it from the Plugins menu
3. Click **Foureyed Shortcode Control** in your WordPress sidebar to get started

== Frequently Asked Questions ==

= Is this safe to use? =
Yes. Shortcode Control only adds a management interface — it doesn't modify your plugins or themes. Everything is reversible with one click.

= Will this slow down my website? =
No. The plugin only runs in your WordPress admin. On the front-end, there's zero performance impact. Your visitors won't notice it's installed.

= What if I silence a shortcode I need? =
Just restore it instantly. No data is deleted, no settings are lost. It takes one click to fix.

= Can I see where a shortcode is used? =
Yes. Use the Scanner to find every post and page where a shortcode appears. See exactly which content needs attention before making changes.

= Does this work with custom shortcodes? =
Yes. Shortcode Control discovers all registered shortcodes — core, plugin-created, theme-created, and custom. If WordPress knows about it, Shortcode Control can show it and manage it.

= What about shortcodes in widgets or custom post types? =
The Scanner finds shortcodes in all post types. Widget content and custom fields may need to be checked manually.

= Will it find all shortcodes from every theme and plugin? =
Not always. Shortcode Control discovers shortcodes by reading the WordPress shortcode registry at the time the admin loads. If a plugin or theme registers shortcodes the standard way, they will appear. However, if a developer placed the registration behind conditional logic that isn't triggered during an admin page load, those shortcodes won't be in the registry and won't be visible here.

== Screenshots ==

1. Start Here — overview of your registered shortcodes and scan results at a glance
2. Shortcode Manager — full list of registered and orphaned shortcodes with their source and current status
3. Scanner — scan your content to find which posts contain orphaned or problematic shortcodes
4. Settings — configure scan exclusions and plugin behaviour

== Changelog ==

= 1.0.5 =
* Feature: Silenced filter tab on Scanner page (Silenced = any shortcode with granular status "hidden", regardless of live status)
* Improve: "Hide"/"Hidden" terminology renamed to "Silence"/"Silenced" across Manager and Scanner for clarity
* Improve: Status badge tooltips on Manager and Scanner — plain-language explanation of what each status means on the front-end plus technical detail in parentheses
* Improve: Start Here scanner stats row expanded to 5 cards (added Silenced); "Active" renamed to "Enabled" to match Scanner tab labels
* Improve: Start Here stat cards all converted to anchor links (consistent hover/pointer behaviour)
* Improve: Start Here section subtitles explain what each stats row is counting (unique tags vs. content usages)
* Fix: Silenced shortcodes (granular_status=hidden) now correctly counted and filtered under Silenced tab, not Disabled or Orphaned

= 1.0.4 =
* Feature: Scan exception — exclude Gutenberg block types (Custom HTML, Code, Preformatted, Verse) from scanner to reduce false positives
* Improve: Manager redesign — two-table layout (Registered / Orphaned) with unified filter tabs and search
* Improve: Manager filter tabs now on left, search field on right (consistent with Scanner)
* Improve: Start Here stats card shows all 5 status counts (All, Enabled, Disabled, Hidden, Orphaned)
* Improve: Start Here stats respect the "hide core shortcodes" setting, matching Manager counts
* Fix: Manager source column shows "Unknown Source" for numeric/unknown orphan tags instead of wrong plugin name
* Fix: Scanner silenced orphan shows "Silenced" badge instead of "Orphaned"

= 1.0.3 =
* Fix: Strip Gutenberg block comments before scanning to prevent false positive numeric shortcode matches
* Fix: Infinite reload loop in Manage Shortcodes page after cache reset (transient-based guard)
* Fix: Run scan link in Manager table intercepted by toggle JS
* Fix: Sync plugin header Version field
* Improve: Settings & Tools page — rename, merge tabs from 4 to 2
* Improve: Manager table uses native WP list table styles
* Improve: Scanner page declutter with tooltips on button and action links
* Improve: Scanner shows hint for hidden core shortcodes instead of broken Manage link
* i18n: Add translators comments for sprintf placeholder strings

= 1.0.2 =
* Refactor: Implement Api Facade pattern for strict module isolation
* Refactor: Consolidate core layer - merge thin wrapper classes for cleaner architecture
* Refactor: Centralize all DB keys and constants through DataRegistry
* Refactor: Rebrand all constants to FOUREYED_SHORTCODE_CONTROL_ prefix
* Refactor: Move orphan adoption logic into unified ShortcodesDataProvider
* Improve: Enhanced module isolation and extensibility for future Pro features
* Fix: WordPress.org review feedback addressing

= 1.0.1 =
* Fix: unadopt removes tag from disabled list
* Fix: wpdb prepare argument order in get_existing_result

= 1.0.0 =
* Initial public release on WordPress.org
* Complete registered shortcode discovery and listing
* One-click toggle to enable/disable any registered shortcode
* Database scanner to find orphaned and broken shortcodes
* Adopt broken shortcode to disable it
* Zero front-end performance impact
* Tested on WordPress 6.9
