Two vendors, one fault

WordPress Theme Plugin Conflict: Prove Which One Breaks, in the Right Order

Which plugin broke the site? Usually the one you would have bet on last. Theme and plugin conflicts are proven by elimination, not intuition, and the order of the tests decides whether that takes twenty minutes or a lost weekend.

October 14, 2026 · 7 min read

The short answer

To find a WordPress theme plugin conflict, clear caches and switch off optimization first, then test on a staging copy or in Health Check's troubleshooting mode, which disables plugins and switches to a default theme for your login only. Re-enable plugins in halves until the fault returns, then test the theme and that plugin alone together.

On this page
  1. Signs the fault lives between two products
  2. Health Check troubleshooting mode: what it isolates and what it cannot
  3. Why staging comes before any switch-off
  4. The test order that names the culprit
  5. Conflicts we see again and again
  6. Keeping a fragile pairing stable
  7. When every month brings a new pairing to test

Signs the fault lives between two products

A conflict is a fault that neither product has on its own. The theme works with a default plugin set. The plugin works with a default theme. Together, one of them overrides the other's styles, loads a script twice, hooks into the same moment, or expects data the other changed. Each vendor's support desk, testing its own product in isolation, sees nothing wrong, which is why conflicts bounce between support tickets for weeks.

  • The fault started the day one product updated, while the other did not.
  • It affects one feature, such as a filter, a form, a gallery or a cart, rather than the whole site.
  • Each vendor says their product works fine on a clean install, and both are telling the truth.
  • Styles from one product appear inside the other's elements, such as a theme's spacing applied to a plugin's grid.
  • Disabling a plugin fixes the page but loses a feature you need.

Real examples from support threads: Astra's article class was added to Elementor Loop Grid items and changed their width and spacing. Ollie's theme CSS made a Forminator consent checkbox take most of a form row. OceanWP's mobile menu fails with SiteGround Speed Optimizer's Combine JS setting on. None of these show up when either product is tested alone.

Health Check troubleshooting mode: what it isolates and what it cannot

The Health Check & Troubleshooting plugin, maintained on wordpress.org, offers a troubleshooting mode that gives you a clean WordPress session where all plugins are disabled and a default theme is used, but only for your user, until you turn it off or log out. Visitors keep seeing the normal site. You then switch plugins back on and change the theme for your session alone, which makes it possible to test on a live site without taking it down.

Know its limits before you rely on it. The session is yours, so anything that only happens to logged-out visitors, such as a page cache or CDN serving a stale file, cannot be reproduced in it. Scheduled tasks, server caches and code that runs for everyone are untouched. If you get stuck in the mode, the plugin's FAQ says clearing your cookies ends it. And as of October 2026 its wordpress.org page shows version 1.7.1, tested up to WordPress 6.6.10, with a warning that it has not been tested with the latest three major releases. It is still a useful tool, but on a store or a busy site we use it on staging, not production.

Why staging comes before any switch-off

Conflict testing means turning things off, and on a live site that means a customer meets a store without its payment plugin or a form without its spam protection. A staging copy, files and database, at a private address, lets you break anything. Many hosts create one with a button. Two cautions: a staging copy can still send real emails and fire scheduled tasks, so disable outgoing mail and payment webhooks on it; and check that staging reproduces the fault before testing anything, because if it does not, the cause is outside WordPress, in the host's cache, a CDN rule or a firewall.

The test order that names the culprit

  1. 1

    Rule out caches and optimizers

    Clear every cache layer and switch off minify, combine, defer and delay settings. Optimizers cause more apparent conflicts than any other plugin type, and this step is harmless.

  2. 2

    Record what changed

    List every update and new plugin from the days before the fault. Search your inbox for WordPress's automatic update emails and check the host's log for changes you did not make yourself.

  3. 3

    Swap the theme first

    On staging, with all plugins on, switch to a default theme such as Twenty Twenty-Five. If the fault vanishes, the theme is one half of the conflict. If it stays, the theme is cleared.

  4. 4

    Turn off plugins in halves

    Restore the theme, then disable half the plugins. If the fault goes, the culprit is in that half; if not, it is in the other. Keep halving. Thirty-two plugins take about five rounds, not thirty-two.

  5. 5

    Confirm the pair

    With only the theme, its required companions and the suspect plugin active, reproduce the fault. Then remove the suspect and confirm it stops. That pair is your conflict.

  6. 6

    Test the versions

    Roll the most recently updated product of the pair back to its previous version on staging. If the fault disappears, you know which release introduced it.

  7. 7

    Decide and report

    Replace the plugin, roll back, or apply a targeted fix, then send both vendors the versions, the steps to reproduce and your test results.

Treat companion plugins as part of the theme during these tests. Avada needs Avada Core and Avada Builder on matching versions, WoodMart needs WoodMart Core, and much of Blocksy's free feature set lives in Blocksy Companion. Disabling a required companion creates a new fault and muddies the result.

Conflicts we see again and again

Recurring theme and plugin conflict patterns
ExampleWhere to go next
Optimizer vs theme scriptsOceanWP mobile menu and SiteGround Combine JSJavaScript errors
Duplicate featuresWoodMart's vendor warns about plugins that replace its AJAX filters or duplicate its swatches and wishlistsWoodMart WooCommerce issues
Builder vs theme layoutTheme widths, titles or headers fighting the builder'sElementor theme conflict
Double lazy loadingWoodMart's docs advise only one primary lazy-loading systemSlow largest paint
Security plugin vs builderElegant Themes lists security plugins and firewalls among causes of Divi changes not savingDivi repair
Not a plugin at allA Hestia multisite editor fault traced to a CSP rule in .htaccessTheme not loading

The last row is a reminder that elimination sometimes clears every plugin. When it does, look at the server: PHP version, firewall rules and headers. The PHP update guide covers the most common server-side change.

Keeping a fragile pairing stable

Once you know two products conflict, you can manage the pairing instead of rediscovering it. Write it down: which theme, which plugin, which versions, what breaks. That note is worth more than any general advice.

  • Pick one plugin per job. One cache, one optimizer, one lazy loader, one SEO plugin, one form tool.
  • Prefer features your theme already has over a plugin that duplicates them, or switch the theme's version off.
  • Turn off automatic updates for the theme, its companions and the builder, and update those on staging first.
  • Read changelogs for words like 'compatibility', 'refactor' and 'migration' before updating.
  • Keep a backup taken just before every update so a rollback takes minutes.

If you would rather not do this yourself, our plugin repair team and theme troubleshooting service run the same test order on a staging copy and hand you the proof. For individual themes, the WordPress repair library has deeper pages, such as Avada update problems.

When every month brings a new pairing to test

A conflict is what happens when independent vendors ship code into the same page without testing together. With a theme, a builder, an add-on pack and twenty plugins, the number of possible pairings is large, and every update adds a new version to the mix. You can manage that with discipline. You cannot make it go away.

A Next.js site removes the runtime plugin layer: features are part of one codebase, packages are pinned, and the whole thing is built and tested before deploy. That costs more up front and needs a developer for layout changes, so it suits sites where downtime costs real money. Compare the two approaches in plugins vs Next.js and the full comparison, or see what a WordPress to Next.js move costs. More symptoms are in the troubleshooting section.

Questions people ask before they call

No. The plugin's description says the clean session, with plugins disabled and a default theme, applies only to your user until you disable it or log out. Visitors see the normal site. Because of that, it cannot reproduce faults that only logged-out visitors see. If you get stuck in the mode, clearing your cookies ends it.

Swap the theme to a default one on staging with all plugins on. If the fault disappears, the theme is involved. Then find the plugin by halving. The fault belongs to the pair, and the fix can live in either product. Our theme repair team can patch whichever side is cheaper to change.

Only with care. Troubleshooting mode limits the changes to your session, but on a store or lead-generation site we still use staging, because one wrong click disables a payment gateway for everyone. If checkout is already failing, start with WooCommerce checkout not working.

Send both vendors the same evidence: versions, steps to reproduce, and the result of testing the pair alone on a clean staging copy. Proof moves tickets. Meanwhile, roll back whichever product updated most recently. If the pairing keeps breaking, replace one side.

There is no safe number. Ten well-maintained plugins can be fine and three abandoned ones can break a site. What matters is overlap, maintenance and how much code each adds to every page. A free site audit lists overlaps and plugins that have stopped updating.

Keep reading

Free · No obligation

Get the conflicting pair named, with proof

Tell us what broke and what updated. We test on a staging copy, identify the pair and the release that caused it, and quote a fixed price for the fix.

Which of these sounds like you? (pick any)

Rather talk now? Call (210) 346-0848.

CallGet a quote