Custom Database Tables
Crucible Scan creates two custom tables in the WordPress database, prefixed with the WordPress table prefix (typically wp_):
| Table | Purpose |
|---|---|
{prefix}crucible_scan_scans | Scan metadata: date, type, status, page count, issue count, compliance score |
{prefix}crucible_scan_issues | Individual issues: scan ID, page URL, criterion, severity, description, element HTML, status |
WordPress Options
Settings and lightweight data are stored in the wp_options table using the crucible_scan_ prefix:
| Option Key | Purpose |
|---|---|
crucible_scan_post_types | Array of post types included in scans |
crucible_scan_excluded_posts | Array of post IDs excluded from scans |
crucible_scan_resolved_issues | Array of fingerprints marked as resolved |
crucible_scan_ignored_issues | Array of fingerprints marked as dismissed |
crucible_scan_dynamic_filter | Boolean master toggle for dynamic filtering |
crucible_scan_dynamic_filter_categories | Associative array of filter category toggles |
crucible_scan_standards | Array of active regulatory standards |
crucible_scan_activated | Boolean flag indicating plugin has been activated |
Transients
Scan results for the most recent scan are cached in a transient (crucible_scan_passed_items) to avoid repeated database queries when loading the results page.
Data Retention & Cleanup
Scan data is automatically cleaned up based on the license tier’s retention window (7 to 365 days). The cleanup runs daily via WordPress cron. Records older than the retention window are permanently deleted from both custom tables.
Uninstall Behavior
When the plugin is deleted (not just deactivated), the uninstall.php file runs and removes all custom tables, all crucible_scan_* options, all related transients, and all scheduled cron events. This ensures a clean removal with no database orphans.