A plugin conflict happens when two plugins (or a plugin and the theme, or a plugin and the current PHP version) don’t work together. Typical symptoms: a broken layout, a button that does nothing, the block editor failing to load, checkout errors, a white screen, or “There has been a critical error”. Finding the culprit is a methodical process, and on a VPS you can do it without affecting visitors.

Step 0: back up and, ideally, use staging

Testing by deactivating plugins on a live site can break things for visitors (forms, payments, caching). Clone the site to a staging copy first if possible. See WordPress staging site and WordPress backup without a plugin.

Step 1: collect clues

  • When did it start? Right after updating a plugin, the theme, WordPress, or PHP? That’s your prime suspect.
  • PHP errors: check the logs for fatal errors and warnings that name a plugin path:
sudo tail -n 50 /var/log/nginx/error.log
tail -n 50 /var/www/example.com/wp-content/debug.log

See WordPress debug mode.

  • JavaScript errors: open the browser’s DevTools Console on the broken page. Errors like Uncaught TypeError … plugin-name/js/… point to the plugin. jQuery errors often mean a plugin loads its own outdated jQuery.

Step 2: Health Check troubleshooting mode (no visitor impact)

The Health Check & Troubleshooting plugin (by the WordPress team) has a Troubleshooting Mode. It disables all plugins and switches to a default theme for your session only. Visitors still see the normal site. Enable plugins one at a time from the admin bar until the problem reappears.

Step 3: bisect with WP-CLI (fast, on staging)

cd /var/www/staging.example.com
wp plugin list --status=active --field=name > active-plugins.txt

wp plugin deactivate --all
# test: is the problem gone? If yes, a plugin is involved.

# re-activate half of them
head -n 10 active-plugins.txt | xargs wp plugin activate
# test again, then narrow down the half that brings the problem back

Halving the list each time finds the culprit among 30 plugins in about five rounds. Then check pairs: the conflict might only appear when plugin A and plugin B are both active.

Test the theme too:

wp theme activate twentytwentyfive

See WP-CLI guide.

Step 4: common conflict patterns

Symptom Typical cause
Layout broken after an update Caching or optimization plugin combining or deferring CSS/JS. Clear caches, exclude the script
Block editor won’t load A plugin’s JS error, or REST API blocked by a security plugin
Forms or checkout fail JS “defer/delay” optimization, or security/firewall rules
Fatal error after a PHP upgrade Old plugin not compatible with PHP 8.x. See WordPress PHP 8 compatibility
Two plugins doing the same job Two SEO plugins, two cache plugins, or two security plugins: keep one
Redirect loops Redirect plugin plus server redirects, or SSL plugin plus proxy. See too many redirects

Step 5: fix it

  • Update both plugins, the theme and WordPress. Many conflicts are already fixed upstream.
  • Check the plugins’ support forums or changelogs for the issue.
  • Configure around it: exclude a script from minification or delay, or disable an overlapping feature in one plugin.
  • Replace an abandoned plugin (no updates for a year or more) with a maintained alternative.
  • Report it to the plugin authors, with the steps to reproduce, PHP and WordPress versions, and the error messages.
  • As a last resort, roll back the plugin version (WP Rollback plugin, or wp plugin install plugin-slug --version=1.2.3 --force) until a fix is released.

Prevent future conflicts

  • Keep the plugin count lean. Each plugin is code you have to trust and update.
  • Avoid overlapping plugins (one cache, one SEO, one security plugin).
  • Update on staging first, especially major versions. See update WordPress safely.
  • Check that plugins are tested with your WordPress and PHP versions.
  • Monitor errors after updates (PHP error log, uptime checks). See Uptime Kuma.

Quick reference

Step Tool
Find errors PHP error log, debug.log, browser console
Test without visitor impact Health Check Troubleshooting Mode
Bisect plugins wp plugin deactivate --all, then activate in halves
Test theme wp theme activate twentytwentyfive
Roll back wp plugin install <slug> --version=X --force

Related: WordPress critical error and WordPress hooks: actions and filters.

  • WordPress
  • Troubleshooting
  • Plugins