[wp-trac] [WordPress Trac] #48610: Fatal Error during upgrade (upgrade.php) caused by theme unavailability
WordPress Trac
noreply at wordpress.org
Wed Nov 13 19:36:42 UTC 2019
#48610: Fatal Error during upgrade (upgrade.php) caused by theme unavailability
-----------------------------+-----------------------------
Reporter: thomasfw | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Upgrade/Install | Version: 5.3
Severity: normal | Keywords:
Focuses: |
-----------------------------+-----------------------------
**Some Context**
We have a number of mu-plugins that handle core functionality in our
client's website. Within one of these mu-plugins, we're using a class
that's defined in the active theme in order to load a template part. I'm
aware that this wouldn't be advised for either a distributed plugin or
theme, but our project utilises Bedrock, Composer etc. to lock everything
down, so the active theme and (mu-)plugins cannot be changed.
The mu-plugin in question registers a shortcode with `add_shortcode()`,
and we're using the theme's helper class in the callback to output some
pagination within the shortcode.
**The Issue**
After upgrading WP, the dashboard redirect to "mywebsite.test/wp-
admin/upgrade.php" results in a blank screen, and i'm not able to upgrade
the database or view the dashboard.
Because `upgrade.php` is seemingly ''not'' loading the theme (whilst all
mu-plugins ''are'' loaded), a fatal error occurs because the class
dependency inside our mu-plugin can't be found.
In an attempt to resolve this I tried registering the shortcode only
''after'' the theme was initialised, by hooking on the `after_setup_theme`
action, instead of on `init`.
The `after_setup_theme` action as described in the WP docs - "This is the
first action hook available to themes, triggered immediately after the
active theme's functions.php file is loaded.".
So one would assume that this action would only be fired when the theme
was available, making it a suitable candidate, but the fatal error still
occurs. Why does this action still fire when it appears that the theme is
not loaded during the upgrade process?
What does fix this for me is using an even later hook
(`template_redirect`) to register the shortcode. In this case, the
upgrade.php page loads without a fatal error and I am able to upgrade the
site, but i'm unsure of any potential side effects of registering a
shortcode so late on, and i'm hoping there's a potential fix available in
the core to prevent this issue reoccurring.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/48610>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list