cache – What do I do if my WordPress site is suddenly sanitizing portions of URLs it shouldn’t?

Nobody has touched wp-admin for this site in weeks. Suddenly, URLs are being sanitized in ways that break everything. The question marks of query parameters are being replaced with URL escape code %3F, which is obviously breaking nearly every script and stylesheet include that’s affected. The result is content like this:

<script type='text/javascript' src="https://wordpress.stackexchange.com/wp-content/plugins/woocommerce/assets/js/select2/select2.full.min.js%3Fver=4.0.3"></script>

<script type='text/javascript' src='wp-includes/js/wp-embed.min.js%3Fver=5.4.1'></script>

Some, but not all URLs in the document are affected. Scripts and some anchor elements are affected.

In addition to this URL madness, it seems like portions of the main site are being included in every single page – i.e., the homepage’s markup is being embedded within wp-admin pages, etc.

The effect is that the site can essentially not be used – large dynamic portions of pages, especially the main landing page, simply fail to load or appear malformed due to missing scripts and stylesheets.

I should add that it’s nearly impossible to navigate wp-admin given the absurd state that it’s in at the moment, so I can’t really find my way around to do regular diagnostics.

How do I even begin to fix something like this? If this wasn’t a moneymaking site with plenty of content I haven’t even touched (‘the last guy’ decided to install dozens of plugins whose purposes are difficult to decipher, are possibly redundant, and might break everything if removed) I would gladly just reinstall everything.

I have attempted:

  • Removing a “WP Fastest Cache” plugin which, according to some, ‘breaks everything’ as of this month. Edit: It looks like this plugin is parasitic. After deactivating it, clearing my local cache, etc., pages still contain a comment marking them as having been cached by it…

  • Visiting and re-saving permalink settings in wp-admin as suggested by a comment I found in a similar issue elsewhere.