Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Plugins Themes Updates

WordPress Says a Plugin Is Active but Its Files Are Missing

Recover a WordPress plugin recorded active when its files are missing by preserving settings, restoring trusted files and verifying cron and data.

WordPress stores active plugin paths in the database. If deployment, restore or manual deletion removes that directory, the active record can remain until WordPress notices and deactivates it. Features, shortcodes, cron and integrations may disappear before the administrator shows a clear explanation.

Do not reinstall an arbitrary version. First identify the exact plugin edition and last known data state.

Confirm the stored path

Use WP-CLI or a protected WordPress option inspection to list active plugins without printing unrelated secrets.

wp plugin list

For multisite, inspect network-active and site-active plugins separately. Record the expected directory/main-file.php, version and source.

Do not edit the serialized active_plugins value by hand.

Inspect the filesystem

Check wp-content/plugins for missing, renamed, empty or partially restored directories. Review modification times, ownership, disk/inode limits and deployment logs.

Search quarantine/trash only through authorised security/hosting tools. A scanner may have removed files for a reason.

Do not restore unknown PHP from quarantine without reviewing why it was flagged.

Preserve plugin data

Take files/database backups before changing activation. Identify plugin tables, options, custom posts, uploads and external configuration.

Removing files normally leaves database data, while an uninstall action may delete it. Avoid clicking Delete or running uninstall hooks until retention is understood.

Record licence/account access for obtaining the legitimate package without exposing keys.

Find the correct package

Use WordPress.org or the official vendor/customer account. Match free/pro edition, slug and version compatible with current WordPress/PHP.

Compare the previous lock file, backup or update log. Installing the newest release can trigger a large schema migration beyond the immediate recovery.

Verify checksums/signatures where available; never use unofficial mirrors.

Restore atomically

Test on staging. Place the complete package under the exact expected directory/main filename with correct ownership.

plugin-slug.new -> plugin-slug

Avoid merging into a partial directory. Clear OPcache after replacement and check PHP logs before activation.

If the active database entry loads the plugin immediately, use a maintenance window or temporarily deactivate via WP-CLI first.

Check database migrations

On load, the restored plugin may compare stored schema version and run updates. Take a fresh database backup and read vendor notes.

Do not alternate old/new versions while a migration runs. Capture errors and use supported recovery.

For large datasets, run CLI/background migration with monitoring rather than a browser timeout.

Restore dependent features

Check shortcodes/blocks, scheduled events, REST/AJAX, email and integrations. Recreate cron only through the plugin’s activation/repair tool; duplicate scheduled hooks can repeat external work.

Confirm settings still point to current domains and credentials after a migration or restore.

Do not assume the plugin screen proves its functional data is intact.

Audit jobs missed during the absence

List scheduled hooks, incoming webhooks and external events that should have run while the files were unavailable. A restored plugin cannot always infer which notifications, synchronisations or cleanups were missed.

Compare provider IDs and timestamps with WordPress records. Replay only bounded, verified idempotent operations; an absent local note does not prove the remote side did nothing. Document events requiring manual reconciliation.

Check dependent themes and plugins

Themes and add-ons may call the missing plugin’s functions without guards. Search PHP logs for secondary fatals after restoration.

Update compatible dependencies together in staging and confirm load order. Do not add permanent guards merely to silence a feature that must remain operational; graceful degradation should be an intentional design.

Verify and prevent recurrence

Test the exact public/admin feature and inspect logs. Confirm backups include licensed plugins or document the vendor retrieval process.

Recurring care should alert on missing active paths and incomplete deployments. A durable repair restores trusted code, preserves data and identifies whether deletion came from human action, failed restore, storage exhaustion or security containment.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident