130 guides
PHP upgrade guides for WordPress
Plain guides to moving WordPress sites to newer PHP versions: what breaks, what only shows notices, and what to do.
PHP security support explained: active support, security fixes and end of lifeEach PHP version gets two years of active support, two of security fixes, then none. What each phase means for a WordPress site, with an example.
Self-hosted WordPress: how to apply the October 2026 PHP security updateWordPress on your own server or VPS? How to apply the October 2026 PHP security update (PHP2Shell), restart PHP, and check that it took effect.
PHP 8.6 is coming: what WordPress site owners should knowPHP 8.6 is planned for 19 November 2026. What changes for WordPress plugins, why not to rush, and what the October 2026 security release means.
How to read a PHP security advisory: CVE, GHSA, CVSS and patched versionsCVE, GHSA, CVSS 9.2, affected and patched versions, mitigations: how a WordPress site owner reads a PHP security advisory, with PHP2Shell as example.
PHP 7.4, 8.0 and 8.1 backports for PHP2Shell: what they mean for your WordPress siteNo official PHP release fixed PHP2Shell on 7.4, 8.0 or 8.1, but source backports exist. What that means for a hosted WordPress site, and next steps.
What to ask your host after the October 2026 PHP security releaseFive questions to ask your host about the October 2026 PHP security release (PHP2Shell), a message you can copy, and how to judge the answers.
Will a PHP security update break my WordPress site? Patch releases vs upgradesA PHP security patch like 8.3.35 to 8.3.36 keeps compatibility; an upgrade like 8.1 to 8.3 doesn’t. How to tell them apart, and when to check.
CVE-2026-115560: PHP’s session upload progress advisory, explainedphp.net’s advisory of 23 October 2026 (CVE-2026-115560) suggests session.upload_progress.enabled=0. Who is concerned, why it’s unlikely, and what to do.
PHP2Shell mitigations explained: what they change, and what they don’tmemory_limit=-1, post_max_size, session.upload_progress.enabled=0: what php.net’s PHP2Shell mitigations do, what they cost, and why you update.
mod_php or PHP-FPM? Why it matters for PHP2Shell, and how to tell which your site usesphp.net considers Apache with mod_php most at risk from PHP2Shell. How to see in WordPress Site Health how your host runs PHP, and what it changes for you.
PHP upgrade checklist for WordPress agencies managing client sitesAfter October 2026’s PHP security release: a checklist for agencies with many WordPress client sites. Inventory, triage, hosts, clients, upgrades, reports.
Fix “Passing null to parameter … is deprecated” (PHP 8.1+)How to fix “Passing null to parameter #1 ($string) of type string is deprecated” in WordPress: what it means, why it comes and goes, the fix.
Fix “Creation of dynamic property … is deprecated” in WordPressHow to fix “Creation of dynamic property … is deprecated” (PHP 8.2+) in a WordPress plugin or theme: three fixes, which to choose, who applies it.
“Deprecated” vs “Fatal error” in PHP: which one breaks your site?A PHP message starting with “Deprecated:” or “Fatal error:”? Which one stops your WordPress site, which can wait, and how to tell them apart.
How to change the PHP version in cPanel, Plesk and hosting dashboardsWhere to change your WordPress site’s PHP version: cPanel’s MultiPHP Manager, Plesk’s PHP settings, other dashboards, and what to check.
How to test PHP compatibility on a WordPress staging siteChanging PHP version after the October 2026 security release? How to test it on a WordPress staging copy: what to check, open and log.
Will my plugins work on PHP 8.4? How to find out before upgradingMoving to PHP 8.4 for its longer security support? How to find out which WordPress plugins will work, which only show notices, and which break.
WordPress critical error after a PHP update: how to fix itCritical error after your host updated PHP? First check if it was a patch or a version change, then get the site back and fix the cause.
Which PHP version should WordPress use in 2026?After October 2026’s PHP security release: which PHP version a WordPress site should run, the patched minimum of each, and how long each one gets fixes.
Upgrading WordPress from PHP 8.1 to 8.3: step by stepPHP 8.1 got no fix for PHP2Shell. How to move a WordPress site from PHP 8.1 to 8.3: what changes in 8.2 and 8.3, what to check, and the steps in order.
PHP 8.2 end of life (31 Dec 2026): what WordPress users need to knowPHP 8.2 got the PHP2Shell fix in 8.2.35, one of its last. After 31 December 2026 it gets none. What that means for WordPress users, and the next step.
CVE-2026-109618 and CVE-2026-109619 explained for WordPress usersWhat CVE-2026-109618 and CVE-2026-109619 (PHP2Shell) are, in plain words: how they work, which setups are most at risk, and what they mean for WordPress.
How to check your exact PHP version in WordPress (and if it’s patched)Find your exact PHP version in WordPress Site Health and check it against the PHP2Shell fixes: 8.2.35, 8.3.36, 8.4.27, 8.5.12 or later are patched.
Still on PHP 7.4, 8.0 or 8.1? How to upgrade WordPress safelyPHP 7.4, 8.0 and 8.1 got no official fix for PHP2Shell. How to move your WordPress site to PHP 8.3 or 8.4 safely: what to check, in what order, and when.
PHP2Shell: what WordPress site owners should do nowPHP2Shell (CVE-2026-109618, CVE-2026-109619) lets attackers run code through PHP itself. How to check if your WordPress site is patched, and what to do.
How to check PHP compatibility for a custom WordPress themeIs your custom WordPress theme ready for PHP 8.3, 8.4 or 8.5? Two checks that together find what breaks: one reads the code, one runs the pages.
5 kinds of WordPress plugins that cause PHP upgrade errors (and how to fix them)Which WordPress plugins break when you upgrade PHP? Five kinds to check first, what goes wrong in each, how to fix it, and how to find yours first.
What is E_DEPRECATED in PHP, and how to handle it in WordPressE_DEPRECATED is PHP’s error level for code that will stop working in a future version. What it means, how WordPress reports it, and how to handle it.
Preparing your WordPress site for PHP 8.4: a complete checklistUpgrading WordPress to PHP 8.4? A complete checklist: WordPress version, extensions to ask your host about, the compatibility check, the switch, and after.
How to fix common PHP 8.4 deprecation notices in WordPressYour WordPress site shows PHP 8.4 deprecation notices? Keep them off your pages, find the plugin behind each, and the short fix for every common notice.
“implements the Serializable interface, which is deprecated”: what it means and the fix“… implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead” on PHP 8.1? What it means, and the fix.
“mktime() expects at least 1 argument, 0 given”: what it means after PHP 8, and the fix“Uncaught ArgumentCountError: mktime() expects at least 1 argument, 0 given” after a PHP 8 upgrade? What PHP 7.4 already said, and the fix: time().
“Method ReflectionProperty::setAccessible() is deprecated since 8.5”: what it means and the fix“Method ReflectionProperty::setAccessible() is deprecated since 8.5, as it has no effect since PHP 8.1”? What it means for WordPress plugins, and the fix.
“Case statements followed by a semicolon (;) are deprecated” (PHP 8.5): what it means and the fix“Case statements followed by a semicolon (;) are deprecated, use a colon (:) instead” on PHP 8.5? What it means for WordPress, and the fix.
“mb_convert_encoding(): Handling HTML entities via mbstring is deprecated”: the fix“mb_convert_encoding(): Handling HTML entities via mbstring is deprecated” on PHP 8.2? Why importers use it, why text still converts, the replacement.
“Function libxml_disable_entity_loader() is deprecated”: what it means for WordPress, and the fix“Function libxml_disable_entity_loader() is deprecated” on PHP 8? Why plugins called it, why PHP 8 no longer needs it, and a fix that keeps PHP 7.
“__autoload() is no longer supported, use spl_autoload_register() instead”: the fix“Fatal error: __autoload() is no longer supported, use spl_autoload_register() instead” after a PHP 8 upgrade? What it means for WordPress, and the fix.
“usort(): Returning bool from comparison function is deprecated”: what it means and the fix“usort(): Returning bool from comparison function is deprecated” since PHP 8.0? Why sorting still works, what the plugin should return instead: the fix.
“Implicit conversion from float … to int loses precision”: what it means in WordPress, and the fix“Deprecated: Implicit conversion from float 1.5 to int loses precision” (or float-string) since PHP 8.1? What PHP was silently doing before, and the fix.
“Function strftime() is deprecated” in WordPress (PHP 8.1): what it means and the fixSeeing “Function strftime() is deprecated” since PHP 8.1? Why plugins still use it, why the page keeps working, and the WordPress replacement: wp_date().
“Your PHP installation appears to be missing the MySQL extension which is required by WordPress”: the fixWordPress says your PHP installation is missing the MySQL extension? Why it happens after a PHP change, and the fix on hosting or on your own server.
“in_array(): Argument #2 ($haystack) must be of type array, null given”: the fix, and array_merge() too“in_array(): Argument #2 ($haystack) must be of type array, null given”, or the same from array_merge() or array_key_exists()? Why PHP 8 stops, the fix.
“Uncaught Error: Undefined constant” on PHP 8: why it happens and the fix“Fatal error: Uncaught Error: Undefined constant” after a PHP 8 upgrade? What PHP 7.4’s “Use of undefined constant … assumed” warning meant, and the fix.
“Illegal string offset” and “Cannot access offset of type string on string”: what they mean and the fix“Warning: Illegal string offset” on PHP 7, “Cannot access offset of type string on string” on PHP 8: one bug. What it means for WordPress, and the fix.
“Non-static method … cannot be called statically” on PHP 8: what it means and the fix“Uncaught Error: Non-static method … cannot be called statically” after a PHP 8 upgrade? What PHP 7.4 said about it, what it means, and the fix.
“Uncaught ValueError: Path cannot be empty” in WordPress: what it means and the fix“Fatal error: Uncaught ValueError: Path cannot be empty” (PHP 8.4: “must not be empty”)? Why PHP 7.4 only warned, why PHP 8 stops, and the fix.
“Warning: Undefined variable” in WordPress after PHP 8: what changed and the fix“Warning: Undefined variable” ($post, $total…) in WordPress since PHP 8? Why a notice nobody saw became a warning, whether it matters, and the fix.
“Cannot modify header information - headers already sent by” in WordPress: find the cause and fix it“Cannot modify header information - headers already sent by (output started at …)” in WordPress? How to read it, the usual causes, and the fix.
“foreach() argument must be of type array|object, null given”: what it means and the fix“foreach() argument must be of type array|object, null given” (or false, string, int) in WordPress? What it means, how PHP 7.4 said it, and the fix.
“Trying to access array offset on value of type null” (or bool) in WordPress: what it means and the fixSeeing “Trying to access array offset on value of type null” or bool in WordPress? Why it appeared after PHP 8, why PHP 8.3 words it differently, the fix.
Check the PHP version with WP-CLI, and why it can differ from your website’swp --info shows the PHP version WP-CLI runs on, not always your website’s. How to check both, and how to check PHP compatibility from the command line.
PHP deprecated functions, 8.1 to 8.5: the list, with replacements, for WordPress sitesThe PHP functions deprecated in 8.1, 8.2, 8.3, 8.4 and 8.5 that plugins still call, each with its replacement, plus what PHP 8.0 removed. How to find them.
How to check a WordPress plugin’s PHP version compatibilityIs a plugin compatible with PHP 8.3, 8.4 or 8.5? What “Requires PHP” really tells you, why WordPress can’t warn you before an upgrade, and how to check.
WordPress not working after a PHP upgrade: error 500, blank page or critical errorError 500, a blank page or a critical error after a PHP upgrade? What each one means, how to get the site back in a minute, and how to find the cause.
How to downgrade PHP for a WordPress site, and when it’s the right moveSite broken after a PHP upgrade? How to switch back to the previous PHP version, what it fixes and what it doesn’t, and how to upgrade again safely.
WordPress requires the json PHP extension: why your site shows it, and the lasting fixWordPress 7.0 says it requires the json PHP extension and won’t load? Why only PHP 7.4 shows it, the quick fix, and the lasting one: a newer PHP version.
PHP 8.3 compatibility checker for WordPress: check before you leave PHP 8.2Check your WordPress plugins and theme for PHP 8.3 before PHP 8.2’s security fixes end: what a checker finds, what only the error log shows, a free check.
PHP 8.4 compatibility checker for WordPress: what it must find, and how to run oneCheck your WordPress plugins and theme for PHP 8.4: the changes a checker must find, the one that stops code, what no checker sees, and a free check.
“Your site is running on an outdated version of PHP”: what WordPress means, and what to doSite Health says your site runs an outdated or older PHP version? What each message means for PHP 7.4 to 8.2, and how to update without breaking it.
“This plugin does not work with your version of PHP”: what it means and the safe fixWordPress says a plugin or its update doesn’t work with your version of PHP? What it blocks, why waiting is risky, and how to move to a newer PHP safely.
“Constant E_STRICT is deprecated” in WordPress: what it means on PHP 8.4Seeing “Constant E_STRICT is deprecated” after moving WordPress to PHP 8.4? What it means, why it isn’t urgent, who fixes it, and the one-line change.
“curl_close() is deprecated since 8.5” in WordPress: what to do insteadSeeing “Function curl_close() is deprecated since 8.5” on your WordPress site? Why the function does nothing since PHP 8.0, and the safe way to remove it.
IMAP and PHP 8.4: why WordPress email plugins break, and what to doPHP 8.4 no longer includes the IMAP extension. What that means for WordPress plugins that read mailboxes, how to check before switching, and your options.
WordPress 7.0 and 7.1 PHP requirements: minimum, recommended and supported versionsWhich PHP version does WordPress 7.0 or 7.1 need? The minimum, the recommended version, every supported PHP version, and what changed from 6.9.
“Calling get_class() without arguments is deprecated” in WordPress (PHP 8.3)Seeing “Calling get_class() without arguments is deprecated” on PHP 8.3? What it means for your WordPress site, why it isn’t urgent, and the exact fix.
“Use of "self" in callables is deprecated” in WordPress: what it means and the fixSeeing “Use of "self" in callables is deprecated” on PHP 8.2 or later? What it means for your WordPress site, where WordPress hooks come in, and the fix.
“Methods with the same name as their class will not be constructors”: what happens on PHP 8PHP 7 warned that methods named like their class won’t be constructors. On PHP 8 they silently aren’t, and the plugin fails elsewhere. How to fix it.
“implode(): Passing glue string after array is deprecated”: the fix, and what PHP 8 does“implode(): Passing glue string after array is deprecated. Swap the parameters”: a notice on PHP 7.4, a fatal error on PHP 8. The tested fix.
“Non-canonical cast (double) is deprecated” in WordPress: PHP 8.5 explainedSeeing “Non-canonical cast (double) is deprecated” on PHP 8.5? Also (integer), (boolean) and (binary): what it means for WordPress, and the fix.
#[\ReturnTypeWillChange]: what the attribute does, and when it’s the wrong fixWhat #[\ReturnTypeWillChange] does in PHP 8.1+, why plugins use it to silence the return type notice, and when to declare the type instead.
PHP compatibility checker for WordPress plugins: what a good one checksLooking for a PHP compatibility checker for your WordPress plugins? Six things a good one must do, and how the free CompatNav plugin checks PHP 8.0 to 8.5.
WordPress theme compatibility checker: is your theme ready for the next PHP version?Is your WordPress theme ready for PHP 8.3, 8.4 or 8.5? Why themes matter most, what to look for, and a free check that runs on your own server.
Check your WordPress site for PHP 8.5 compatibility in four stepsIs your WordPress site ready for PHP 8.5? Check every plugin and theme in four steps with the free CompatNav plugin, then read the verdict.
A PHP 7 to 8 migration tool for WordPress sites: what it should doMoving WordPress from PHP 7.4 to PHP 8? What a migration tool should check across every version in between, and how the free CompatNav does it.
PHP compatibility checker online, or on your own server? What to know firstPasting or uploading WordPress code to an online PHP compatibility checker? What leaves your server, what it can’t check, and the local option.
A PHP compatibility report your clients understand, with your logo on itShow a client whether their WordPress site is ready for a PHP upgrade: what the report must say, and how CompatNav Pro makes it white-label.
A custom WordPress plugin nobody maintains isn’t ready for PHP 8: what now?A custom WordPress plugin nobody maintains won’t work on PHP 8? Find exactly what to change, and get tested fixes to review as patch files.
Get an alert when a plugin update will break your site on the next PHP versionA plugin update can bring code that won’t run on the PHP version you’re moving to. How to find out the day it happens, not the day the host switches PHP.
Will updating the plugin fix it? Check before you install the updateA plugin has PHP compatibility problems and an update is available. Will it fix them, keep them, or add new ones? How to know before you install it.
Find the PHP problems a code scan can’t see: notices that only appear on real visitsSome PHP problems depend on values, so no scan sees them in advance. How to catch them on real visits, and what CompatNav Pro’s runtime logger adds.
WordPress maintenance checklist: weekly, monthly, quarterly and yearly tasksA WordPress maintenance checklist for client sites: what to do every week, month, quarter and year, including the PHP checks most care plans forget.
WordPress maintenance plans: what to include, and what clients pay forBuilding WordPress maintenance or care plans? What each tier should include, how to describe it so clients see the value, and the PHP line item.
How much to charge for WordPress maintenance: a method, not a guessHow much to charge for WordPress maintenance? Set your price from your own hours, tools and response promise, with the yearly PHP upgrade included.
What to put in a WordPress maintenance report that clients actually readWhat to put in a monthly WordPress maintenance report: a one-line status, what you did, what’s coming (like a PHP upgrade), and what the client decides.
How to manage multiple WordPress sites without losing trackManaging many client WordPress sites? One inventory, one routine, WP-CLI for the repetitive parts, and the PHP column most dashboards don’t show.
Test a PHP upgrade on a WordPress staging site first: a step-by-step planHow to use a WordPress staging site to test a PHP upgrade before the live site: set it up, mark it as staging, switch PHP, test what matters, then go live.
WP-CLI: update WordPress plugins safely, with real commands and outputHow to update WordPress plugins with WP-CLI safely: list what has updates, dry run, update one or all, verify checksums. Every command run on a real site.
WordPress plugin auto-updates: on or off for client sites?Should you turn on WordPress plugin auto-updates on client sites? How they work, when they run, the emails they send, and a safe mixed approach.
A WordPress plugin update broke the site: what to do, in orderA plugin update broke a client’s WordPress site? Get it back first (recovery mode, rename the folder, roll back), then find the cause and prevent it.
WordPress website audit checklist for a new client siteTaking over a client’s WordPress site? A first-day audit checklist: access, backups, core and plugin files, PHP version and readiness, Site Health.
WordPress uptime monitoring: what it catches, and what it missesUptime monitoring tells you a WordPress site is down. It can’t see broken forms, admin errors, or the PHP upgrade that will break the site next month.
WordPress plugin not updating, or no update showing: the causes and fixesA WordPress plugin won’t update, or no update shows? The usual causes: closed plugins, expired licences, cached update checks, file permissions.
GitHub Actions for WordPress: check your plugin on several PHP versionsRun a PHP syntax check of your WordPress plugin or theme on PHP 7.4 to 8.5 in GitHub Actions, and what it can’t catch. Tested on official PHP builds.
How to tell a client their WordPress site needs a PHP upgrade (with email templates)Your client’s WordPress site runs a PHP version that’s ending. How to explain it without jargon, what to quote, and two email templates you can adapt.
WordPress plugin conflict test: find the plugin that breaks the siteSuspect a WordPress plugin conflict? Test it with Troubleshooting mode (only you see it), halve the plugin list each round, and confirm the culprit.
“Warning: Undefined array key” in WordPress: what it means and how to fix itSeeing “Warning: Undefined array key” after moving WordPress to PHP 8? Why it appeared, whether it’s dangerous, how to find the plugin, and the fix.
“Attempt to read property … on null” in WordPress: what it means and how to fix itSeeing “Warning: Attempt to read property "post_title" on null” in WordPress? Why PHP 8 shows it, whether it’s dangerous, and how the plugin should fix it.
“Unsupported operand types: string * float” in WordPress: why PHP 8 stops, and the fixA critical error saying “Unsupported operand types” (string + int, string * float) after moving WordPress to PHP 8? Why an empty value stops the page.
“A non-numeric value encountered” in WordPress: what it means on PHP 8Seeing “Warning: A non-numeric value encountered” in WordPress? What it means on PHP 7 and on PHP 8, when it turns into a fatal error, and how it’s fixed.
“Call to undefined function get_magic_quotes_gpc()” in WordPress: the fixA critical error naming get_magic_quotes_gpc() after moving WordPress to PHP 8? Why the function is gone, why removing it is safe, and what WordPress does.
“Using null as an array offset is deprecated” in WordPress: PHP 8.5 explainedSeeing “Using null as an array offset is deprecated, use an empty string instead” on PHP 8.5? What it means for your WordPress site, and why logs matter.
The best PHP version for WordPress in 2026Which PHP version should your WordPress site run in 2026? What WordPress requires and recommends, how long each version gets fixes, and how to choose.
“One or more required modules are missing” in WordPress Site Health: what to doWordPress Site Health says “One or more required modules are missing”? Which PHP modules it means, why they go missing after a PHP change, and the fix.
“Automatic conversion of false to array is deprecated” in WordPress: what it meansSeeing “Automatic conversion of false to array is deprecated” on PHP 8.1 or later? Why WordPress code meets it, why it isn’t urgent, and the one-line fix.
“Unparenthesized a ? b : c ? d : e is not supported” in WordPress: the fixA fatal error about an unparenthesized ternary after moving WordPress to PHP 8? Why the file stops loading, why the old code was often wrong, and the fix.
WordPress and PHP 8.2: what changes for plugins and themesIs your WordPress site ready for PHP 8.2? The changes you’ll most likely meet in plugins and themes, which ones only add notices, and how to check first.
WordPress and PHP 8.1: what changes for plugins and themesMoving a WordPress site to PHP 8.1 or beyond? The PHP 8.1 changes you’ll meet in plugins and themes: one that stops code, many notices, and what to do.
“count(): Argument #1 ($value) must be of type Countable|array” in WordPress: what it means and how to fix itA critical error naming count() after moving WordPress to PHP 8? Why PHP 8 stops on what PHP 7 only warned about, how to find the plugin, and the fix.
“Array and string offset access syntax with curly braces is no longer supported”: fixing old WordPress codeA fatal error about curly braces after moving WordPress to PHP 8? Why the whole file stops loading, how to find the plugin, and the one-character fix.
“Implicitly marking parameter … as nullable is deprecated” in WordPress: what it meansSeeing “Implicitly marking parameter … as nullable is deprecated” on PHP 8.4? What it means for your WordPress site, why it isn’t urgent, and the fix.
“Function utf8_encode() is deprecated” in WordPress: what to use insteadSeeing “Function utf8_encode() is deprecated” on PHP 8.2? What it means for your WordPress site, the tested replacement, and the characters it got wrong.
“Using ${var} in strings is deprecated” in WordPress: what it means and the fixSeeing “Using ${var} in strings is deprecated, use {$var} instead” on PHP 8.2? What it means for your WordPress site, the second wording, and the fix.
“Call to undefined function each()” after a PHP 8 update: find it and fix itA critical error naming each() after moving WordPress to PHP 8? Why the function is gone, how to find the plugin, and the tested foreach replacement.
How to check and change your WordPress site’s PHP versionFind which PHP version your WordPress site runs in two clicks, which version to choose, and how to change it safely in your hosting panel or via your host.
The WordPress debug log: how to turn it on, find it and read itHow to turn on the WordPress debug log without showing errors to visitors, where debug.log is, why it isn’t created, and how to read a PHP error in it.
“Passing null to parameter #1 ($string) of type string is deprecated” in WordPressSeeing “Passing null to parameter #1 ($string) of type string is deprecated”? What the PHP 8.1 notice means, how to find the plugin behind it, the fix.
“Constant FILTER_SANITIZE_STRING is deprecated” in WordPress: what to use insteadSeeing “Constant FILTER_SANITIZE_STRING is deprecated”? What the PHP 8.1 notice means, what the old filter really did, and what to use instead, tested.
“Optional parameter … declared before required parameter” in WordPress: what it means“Optional parameter … declared before required parameter …” or, on PHP 8.0, “Required parameter … follows optional parameter …”? The meaning and the fix.
WordPress and PHP 8.3: what changes for plugins and themesIs your WordPress site ready for PHP 8.3? What changes, among the things you’re most likely to meet in plugins and themes, and how to check first.
Upgrading WordPress from PHP 7.4 to PHP 8: what breaks, and in what orderMoving a WordPress site from PHP 7.4 to PHP 8.3, 8.4 or 8.5? What breaks at each step from 8.0 on, what only adds notices, and in which order to work.
Is my WordPress site ready for PHP 8? A safe pre-upgrade checklistHow to check if your WordPress site is ready for PHP 8.3, 8.4 or 8.5: back up, find your PHP version, check plugins and theme, fix, then switch safely.
WordPress and PHP 8.4: what changes for plugins and themesIs your WordPress site ready for PHP 8.4? What breaks and what only logs notices, among the changes you’re most likely to meet in plugins and themes.
Your host is forcing a PHP upgrade: a calm step-by-step planYour host set a PHP upgrade date, or WordPress says “PHP Update Required”? What it means, what to ask your host, and a calm plan for the weeks ahead.
How agencies check PHP compatibility across many client sitesA workflow for agencies: list each client site’s PHP version, prioritise by deadline, check every site, share the results and schedule the upgrades.
“Creation of dynamic property … is deprecated” in WordPress: what it means and how to fix itSeeing “Creation of dynamic property … is deprecated” on your WordPress site? What the PHP 8.2 notice means, why it isn’t urgent, and who should fix it.
create_function() removed in PHP 8: fixing old WordPress plugins and themes“Call to undefined function create_function()” after moving to PHP 8? Why it happens, what site owners can do, and how to replace it, with tested code.
Deprecation notice vs fatal error: which PHP warnings actually matterDeprecated, notice, warning, fatal error: what each PHP message means for your WordPress site, how to hide them from visitors, and which to fix first.
PHP 8.2 reaches end of life on 31 December 2026: what WordPress site owners should doPHP 8.2 gets security fixes until 31 December 2026. What that means for your WordPress site, which PHP version to choose next, and a safe plan to switch.
WordPress and PHP 8.5: what breaks, what only shows noticesIs your WordPress site ready for PHP 8.5? The three breaking changes and ten notices you’re most likely to meet in plugins and themes, and how to check.
“There has been a critical error on this website” after a PHP update: find the cause and fix it“There has been a critical error” after a PHP update? Get your site back first, find the plugin or theme that stopped, and fix it before upgrading again.