| 开发者 | mt8biz |
|---|---|
| 更新时间 | 2026年5月28日 08:30 |
| PHP版本: | 8.3 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
wp_options table accumulates leftovers from plugins and themes that have been deactivated or deleted but never cleaned up. Those rows bloat the autoload payload on every page load and there is no built-in way to decide which ones are safe to remove.
Orpharion observes which options are actually read at runtime, attributes each read to the plugin or theme that caused it, and surfaces the raw signals (accessor, autoload flag, size, last-read timestamp) so administrators can decide what to remove:
wp_options and the tracking table. Use the Export selected bulk action first if you want a restore copy; Orpharion never writes option_value content to the server filesystem on your behalf (option_value can contain API keys, SMTP credentials, and other secrets that should not leak into backups of wp-content/).build/index.js, build/index.css) is published at https://github.com/mt8/orpharion — see the Source code section below for the exact build steps.
Yes. Tracking is buffered in memory and flushed once per request at shutdown. A sampling-rate option and a 10-minute activation window triggered by admin traffic keep the overhead predictable.
Use Quarantine first. A quarantined option is renamed, not deleted; if anything breaks you can restore it with one click. Only permanently delete after you have confirmed nothing is broken during the quarantine window.
Uninstalling restores any active quarantines to their original names, drops the custom tracking and quarantine tables, removes plugin-owned options, and clears the scheduled cron job. Your regular wp_options data is untouched.
The orpharion is a Renaissance plucked-string instrument invented in England in 1581 by John Rose. The name is a 16th-century coinage from Orpheus and Arion, two legendary musicians of Greek mythology. Music by John Dowland, William Byrd, and others was published for it. The plugin borrows the name as a nod to the idea of carefully tuning what sits in your wp_options table.
npm run build reproduction steps for the compiled admin bundle) is now placed directly after Description so the build-source pointer is immediately visible.Tested up to bumped to 7.0 to reflect the current WordPress release.Tracker::classify_trace() now goes through plugin_basename() instead of comparing against WP_PLUGIN_DIR / WPMU_PLUGIN_DIR directly. This reuses WP core's plugins-root resolution (including symlink awareness via $wp_plugin_paths) without duplicating the constant references in plugin code. Behavior is unchanged for standard setups; the legacy mu: slug prefix on mu-plugin readers is dropped (it was not consulted anywhere downstream).wp_add_inline_style() on admin_enqueue_scripts instead of being printed as an inline <style> tag from admin_head. Visual behavior is unchanged.WP_PLUGIN_DIR and WPMU_PLUGIN_DIR references used to classify backtrace frames are now routed through wp_normalize_path(), with a comment recording why those constants are referenced (identifying other plugins' install roots — Orpharion's own location is resolved from __FILE__).readme.txt now includes a "Source code" section pointing to the public GitHub repository (https://github.com/mt8/orpharion) and the npm run build flow used to regenerate the bundled admin assets.wp orpharion export --output=<file> now requires a bare *.json filename and always writes into wp-content/uploads/orpharion/. Absolute or relative paths and non-.json extensions are rejected so option_value content (which can include API keys, SMTP credentials, and other secrets) cannot be written to a web-accessible location. The export directory is created on demand with index.html and .htaccess so it is not browseable.optrion/optrion_ to orpharion/orpharion_. There is no in-place migration: this is a one-shot rename done before any wp.org release.orpharion_* namespace, and the quarantine rename namespace) into a single ProtectedOptions helper. The cleaner, importer, quarantine, and options-list filter now all derive their behavior from that one source of truth, with consistent name normalization across all of them.orpharion_*), and the quarantine rename namespace are skipped instead of being written to wp_options. Skipped entries are reported in the import summary and the WP-CLI output.get_option() call is attributed to the real plugin or theme on the PHP backtrace./wp-json/orpharion/v1/* (requires manage_options).--accessor-type, --inactive-only, and --autoload-only filters on list, export, and clean.