I am going to say I have to just fixed maybe one of the most obscure problems on a WordPress site, I can almost guarantee you will never have yo do this. I write here only for my own record (okay and a little bit of self high fiving for guessing well).

It has to do with taking the parent away from a child theme on a WordPress multisite install. I use my own DS106 Bank theme in a few places, this error came up in the NetNarr Make Bank. I notice it was spewing a few PHP warnings, and remembered I had not done updates for the new version I made a few clicks back. In the new theme, it no longer used the parent WP-Bootstrap theme, I had rolled everything into a single theme. It worked well on my development site, so I thought it was done.

So replacing the theme on the server (alas, yes, updating a live site) generated an ugly error:

Fatal error about re-declaring a function already declared.

The odd thing about this (well besides that the error even prevented my from getting to the dashboard) was the second reference to functions.php – this was the parent theme no longer used.

(I could not just delete wp-bootstrap because it is used by the Daily Blank theme, one I have not yet chopped the parents from, and even doing that might still have spewed an error).

As this is a multisite, I went into the Network Settings, then Sites, then Themes. The odd thing was, although the new theme never referenced the parent theme, WordPress thought it was still active.

Theme settings suggested wp-bootstrap was still active

Hence my site was referencing two different themes, and they have duplicate functions colliding.

On a lucky guess, I went to the Settings tabs- this is a long list of all the site settings. It was there I noticed that wp-bootstrap was listed as a “template” (how WordPress indicates a parent theme).

The settings for Template read "wp-bootstrap" and the one for Style sheet reads "ds106banker"

This is why WordPress was loading both themes. Just erasing the Template setting or replacing it’s value with the same name as the one for Stylesheet fixed everything.

It’s only my weird fiddlings of de-parenting a child theme that triggered this, but who would have known?

That’s how the WordPress sites are baked. Some lucky hunches.


Featured Image: Modified the top text from public domain image Naval training Station, Newport, R.I., commissary school – class for bakers found at the US Library of Congress.

WordPress Baking tips…
If this kind of stuff has any value, please support me monthly on Patreon or a one time PayPal kibble toss
Profile Picture for Alan Levine aka CogDog
An early 90s builder of the web and blogging Alan Levine barks at CogDogBlog.com on web storytelling (#ds106 #4life), photography, bending WordPress, and serendipity in the infinite internet river. He thinks it's weird to write about himself in the third person.

Comments

  1. You are not alone! A related WordPress ticket (https://core.trac.wordpress.org/ticket/26586) was closed as “maybelater” 4 years ago because changing this data in the database across many sites on a network was a daunting task compared to how often a theme’s parent was actually changed.

    Your blog post made me revisit that ticket and now has me thinking if there will be a way to solve it in the future now that the wp_blogmeta table was introduced in WordPress 5.1. Not likely in the near term, but there’s always a chance we can change how the template/stylesheet options are stored now that a place is available. :)

Leave a Reply

Your email address will not be published. Required fields are marked *