WordPress theme compatibility checker: is your theme ready for the next PHP version?
Short answer
Your theme runs on every page of your site, so a theme that breaks on the new PHP version takes the whole site down, not one feature. Check it for the version you’re moving to before the switch: the free CompatNav plugin reads your active theme (and its parent theme), your inactive themes and all plugins, and says what will break and what only adds notices. Old themes and custom themes are the usual problems, because no update arrives on its own.
Why the theme matters most
A plugin that breaks takes one feature down: a form, a slider. The theme builds every page. If its code stops on the new PHP version, every page shows “There has been a critical error on this website.” until you switch back (the critical error guide).
Which themes to check
- The active theme. Every page uses it.
- Its parent theme, if the active one is a child theme. The WordPress documentation describes a child theme as one that inherits the look and feel of a parent theme (developer.wordpress.org); most of the code usually sits in the parent.
- Inactive themes. They only matter if activated, but an old theme left installed is an accident waiting to happen. Remove what you don’t use.
The highest risk: custom themes built for you years ago, and premium themes whose licence expired. Neither gets updates on its own.
What tends to break in old themes
Old theme code often contains what PHP 8.0 removed or changed: create_function() in widgets and filters, each() loops, curly-brace offsets, count() on settings that aren’t lists. The guides cover each one: create_function(), each(), curly braces, count(). Newer versions mostly add deprecation notices, which don’t stop the page.
Check it with CompatNav
The free CompatNav plugin checks your themes along with your plugins, on your own server:
- Install CompatNav from Plugins → Add New Plugin (search for CompatNav).
- Open Tools → CompatNav, choose the PHP version you’re moving to (8.0 to 8.5) and start the scan.
- Read the verdict: “Safe to upgrade”, or “Not ready yet” with what to do first.
- Open your theme’s entry: each problem is explained in plain words, with whether an update is available and whether the code looks like your own, and a before/after example for whoever maintains it.
A real finding from an old theme’s code, the kind CompatNav shows:

If the theme isn’t ready
- Update it, if an update exists.
- Ask its developer for a version that supports your target PHP, sending CompatNav’s HTML report.
- Custom theme? Your developer gets the file, line and a before/after example for each problem.
- Abandoned? Plan a replacement before the host’s deadline.
Plugins get the same check: what a good PHP compatibility checker does.
Key takeaways
- The theme runs on every page: if it breaks, the whole site breaks.
- Check the active theme, its parent theme if it’s a child theme, and the inactive themes.
- Custom and old premium themes are the risk: they don’t update themselves.
- Check for the exact PHP version you’re moving to, not a vague “PHP 8”.
- A theme that only shows deprecation notices keeps working; plan its update without hurry.
Frequently asked questions
How do I know if my theme supports PHP 8.4 or 8.5?
Look at the theme’s “Requires PHP” and changelog, ask its developer, and check its code for that version. A code check tells you exactly which lines would break.
Do inactive themes matter?
Only if someone activates them, or if your child theme uses one as its parent. Remove themes you don’t use, so they can’t become a problem later.
My theme is a child theme. What do I check?
Both: the child theme’s own files and the parent theme it builds on. Most of the code is usually in the parent.
Check your own site before you upgrade
CompatNav is a free WordPress plugin. It reads the code of your plugins and themes on your own server and tells you, in plain words, what will break and what will only show notices on the PHP version you choose. It never changes your code. It can’t see problems that only appear while code runs with real data, so a quick check of your site after the upgrade still matters.
Sources
About the code examples: each output is the real output of the code shown, run with the official PHP builds, without a php.ini, with all errors reported and displayed. Only the file path was replaced by a neutral server path.