Plugin conflicts rarely say their name. A form stops sending, checkout CSS breaks, or admin whitescreens after an update. The instinct — deactivate everything, re-enable one by one — works, but it is slow and disruptive on a live store.
Here is the order I use before touching a single switch.
1. Read the error before you deactivate anything
Enable logging in wp-config.php:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Reproduce once, then open wp-content/debug.log. A fatal like Call to undefined function or a class redeclaration often names the file inside a plugin. That line can skip half your hunt.
Also note PHP version under Tools → Site Health. Some “conflicts” are PHP incompatibilities wearing a plugin costume.
2. Bisect — do not brute-force
If the log is quiet, deactivate half the plugins, test. Problem gone? Culprit is in that half. Re-enable half of that half. Four rounds localize one plugin from a list of ~32.
Prefer staging. On production, deactivating plugins can drop tables, purge caches, or break checkout mid-test. Health Check’s troubleshoot mode is a safer middle ground for your session only.
3. Find the other half of the pair
Most “plugin conflicts” are two plugins (or plugin + theme) fighting over the same hook. Keep plugin A active, re-enable others one at a time until the break returns. That second activator is plugin B.
4. Fix without throwing features away
In preference order:
- Update both — many collisions are already fixed upstream
- Retire the overlap — two SEO plugins or two cache layers is the real bug
- Unhook the collision with a tiny mu-plugin if both must stay
add_action( 'plugins_loaded', function () {
remove_action( 'wp_enqueue_scripts', 'offending_plugin_enqueue', 10 );
}, 20 );
5. Stop the next one
- Update on staging first
- Keep a quarterly plugin inventory
- Prefer plugins with a release in the last six months
- Leave
WP_DEBUG_LOGon in production with display off
Full walkthrough with the same sequence:
https://shopaiwp.com/guides/troubleshooting/how-to-diagnose-fix-wordpress-plugin-conflicts/
Optional free human-verified audit if you would rather hand the pair-finding off:
https://shopaiwp.com/services/audits/free-wp-audit/
What was the weirdest plugin pair you have seen collide — cache + security, or two “optimization” plugins fighting over the same filter?
Top comments (0)